
I
glXIntro
Chapter 9
238
glXIntro
glXIntro
: Introduction to OpenGL in the X Window system.
Overview
OpenGL (called GL in other pages) is a high-performance 3D-oriented renderer. It is
available in the X window system through the GLX extension. To determine whether the
GLX extension is supported by an X server, and if so, what version is supported, call
glXQueryExtension and glXQueryVersion.
GLX extended servers make a subset of their visuals available for OpenGL rendering.
Drawables created with these visuals can also be rendered using the core X renderer and
with the renderer of any other X extension that is compatible with all core X visuals.
GLX extends drawables with several buffers other than the standard color buffer. These
buffers include back and auxiliary color buffers, a depth buffer, a stencil buffer, and a
color accumulation buffer. Some or all are included in each X visual that supports
OpenGL.
To render using OpenGL into an X drawable, you must first choose a visual that defines
the required OpenGL buffers. glXChooseVisual can be used to simplify selecting a
compatible visual. If more control of the selection process is required, use
XGetVisualInfo and glXGetConfig to select among all the available visuals.
Use the selected visual to create both a GLX context and an X drawable. GLX contexts
are created with glXCreateContext, and drawables are created with either
XCreateWindow or glXCreateGLXPixmap. Finally, bind the context and the drawable
together using glXMakeCurrent. This context/drawable pair becomes the current
context and current drawable, and it is used by all OpenGL commands until
glXMakeCurrent is called with different arguments.
Both core X and OpenGL commands can be used to operate on the current drawable. The
X and OpenGL command streams are not synchronized, however, except at explicitly
created boundaries generated by calling glXWaitGL, glXWaitX, XSync, and glFlush.
Examples
Below is the minimum code required to create an RGBA-format, X window that’s
compatible with OpenGL and to clear it to yellow. The code is correct, but it does not
include any error checking. Return values dpy, vi, cx, cmap, and win should all be tested.
#include <GL/glx.h>
#include <GL/gl.h>
#include <unistd.h>
static int attributeListSgl[] = {
GLX_RGBA,
GLX_RED_SIZE, 1, /*get the deepest buffer with 1 red bit*/
GLX_GREEN_SIZE, 1,
GLX_BLUE_SIZE, 1,
None};
static int attributeListDbl[] = {
Summary of Contents for c3700 - Workstation
Page 9: ...Chapter 1 9 1 A ...
Page 18: ...A glArrayElement Chapter 1 18 glNormalPointer glTexCoordPointer glVertexPointer ...
Page 19: ...Chapter 2 19 2 B ...
Page 40: ...B gluBuild2DMipmaps Chapter 2 40 ...
Page 41: ...Chapter 3 41 3 C ...
Page 49: ...C glXChooseVisual Chapter 3 49 See Also glXCreateContext glXGetConfig ...
Page 73: ...C glCopyPixels Chapter 3 73 glReadBuffer glReadPixels glStencilFunc ...
Page 84: ...C glCopyTexSubImage2D Chapter 3 84 glTexParameter glTexSubImage1D glTexSubImage2D ...
Page 93: ...Chapter 4 93 4 D ...
Page 99: ...D glDeleteTextures Chapter 4 99 glTexImage1D glTexImage2D glTexParameter ...
Page 127: ...Chapter 5 127 5 E ...
Page 148: ...E glEvalPoint Chapter 5 148 ...
Page 149: ...Chapter 6 149 6 F ...
Page 161: ...Chapter 7 161 7 G ...
Page 164: ...G glGenTextures Chapter 7 164 glTexImage1D glTexImage2D glTexParameter ...
Page 207: ...G glGetPointer Chapter 7 207 glSelectBuffer glTexCoordPointer glVertexPointer ...
Page 225: ...Chapter 8 225 8 H ...
Page 228: ...H glHint Chapter 8 228 ...
Page 229: ...Chapter 9 229 9 I ...
Page 248: ...I glIsTexture Chapter 9 248 ...
Page 249: ...Chapter 10 249 10 L ...
Page 256: ...L glLightModel Chapter 10 256 See Also glLight glMaterial ...
Page 271: ...Chapter 11 271 11 M ...
Page 291: ...Chapter 12 291 12 N ...
Page 312: ...N gluNurbsSurface Chapter 12 312 ...
Page 313: ...Chapter 13 313 13 O ...
Page 317: ...Chapter 14 317 14 P ...
Page 360: ...P glPushName Chapter 14 360 See Also glInitNames glLoadName glRenderMode glSelectBuffer ...
Page 362: ...P gluPwlCurve Chapter 14 362 ...
Page 363: ...Chapter 15 363 15 Q ...
Page 372: ...Q glXQueryVersion Chapter 15 372 glXQueryVersion ...
Page 373: ...Chapter 16 373 16 R ...
Page 390: ...R glRotate Chapter 16 390 ...
Page 391: ...Chapter 17 391 17 S ...
Page 397: ...S glScissor Chapter 17 397 See Also glEnable glViewport ...
Page 409: ...Chapter 18 409 18 T ...
Page 448: ...T glTexImage3DEXT Chapter 18 448 glTexGen glTexImage1D glTexImage2D glTexParameter ...
Page 457: ...T glTexSubImage1D Chapter 18 457 glTexImage2D glTexParameter glTexSubImage2D ...
Page 465: ...T glTranslate Chapter 18 465 See Also glMatrixMode glMultMatrix glPushMatrix glScale ...
Page 466: ...T glTranslate Chapter 18 466 ...
Page 467: ...Chapter 19 467 19 U ...
Page 469: ...U gluUnProject Chapter 19 469 See Also glGet gluProject ...
Page 471: ...U glXUseXFont Chapter 19 471 See Also glBitmap glXMakeCurrent ...
Page 472: ...U glXUseXFont Chapter 19 472 ...
Page 473: ...Chapter 20 473 20 V ...
Page 482: ...V glVisibilityBufferhp Chapter 20 482 ...
Page 483: ...Chapter 21 483 21 W ...
Page 486: ...W glXWaitX Chapter 21 486 ...