diff options
Diffstat (limited to 'xc/doc/man/GL/glx/xintro.3gl')
-rw-r--r-- | xc/doc/man/GL/glx/xintro.3gl | 238 |
1 files changed, 0 insertions, 238 deletions
diff --git a/xc/doc/man/GL/glx/xintro.3gl b/xc/doc/man/GL/glx/xintro.3gl deleted file mode 100644 index 218cdd3fe..000000000 --- a/xc/doc/man/GL/glx/xintro.3gl +++ /dev/null @@ -1,238 +0,0 @@ -'\"! eqn | mmdoc -'\"macro stdmacro -.ds Vn Version 1.2 -.ds Dt 6 March 1997 -.ds Re Release 1.2.0 -.ds Dp Feb 16 02:56 -.ds Dm Feb 10 17:2 -.ds Xs 32008 15 xintro.gl -.TH GLXINTRO -.SH NAME -.B "glXIntro -\- Introduction to OpenGL in the X window system - -.SH 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 \f3glXQueryExtension\fP -and \f3glXQueryVersion\fP. -.P -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. -.P -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. -.P -To render using OpenGL into an X drawable, -you must first choose a visual that defines the required OpenGL buffers. -\f3glXChooseVisual\fP can be used to simplify selecting a compatible visual. -If more control of the selection process is required, -use \f3XGetVisualInfo\fP and \f3glXGetConfig\fP to select among -all the available visuals. -.P -Use the selected visual to create both a GLX context and an X -drawable. -GLX contexts are created with \f3glXCreateContext\fP, -and drawables are created with either \f3XCreateWindow\fP or -\f3glXCreateGLXPixmap\fP. -Finally, -bind the context and the drawable together using \f3glXMakeCurrent\fP. -This context/drawable pair becomes the current context and current -drawable, -and it is used by all OpenGL commands until \f3glXMakeCurrent\fP is -called with different arguments. -.P -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 -\f3glXWaitGL\fP, \f3glXWaitX\fP, \f3XSync\fP, and \f3glFlush\fP. -.SH 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 \f2dpy\fP, -\f2vi\fP, -\f2cx\fP, -\f2cmap\fP, and -\f2win\fP should all be tested. -.P -.Ex -#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[] = { - GLX_RGBA, - GLX_DOUBLE_BUFFER, /*In case single buffering is not supported*/ - GLX_RED_SIZE, 1, - GLX_GREEN_SIZE, 1, - GLX_BLUE_SIZE, 1, - None }; - - -static Bool WaitForNotify(Display *d, XEvent *e, char *arg) { - return (e->type == MapNotify) && (e->xmap.window == (Window)arg); -} - -int main(int argc, char **argv) { - Display *dpy; - XVisualInfo *vi; - Colormap cmap; - XSetWindowAttributes swa; - Window win; - GLXContext cx; - XEvent event; - int swap_flag = FALSE; - - - /* get a connection */ - dpy = XOpenDisplay(0); - - /* get an appropriate visual */ - vi = glXChooseVisual(dpy, DefaultScreen(dpy), attributeListSgl); - if (vi == NULL) { - vi = glXChooseVisual(dpy, DefaultScreen(dpy), attributeListDbl); - swap_flag = TRUE; - } - - /* create a GLX context */ - cx = glXCreateContext(dpy, vi, 0, GL_TRUE); - - /* create a color map */ - cmap = XCreateColormap(dpy, RootWindow(dpy, vi->screen), - vi->visual, AllocNone); - - /* create a window */ - swa.colormap = cmap; - swa.border_pixel = 0; - swa.event_mask = StructureNotifyMask; - win = XCreateWindow(dpy, RootWindow(dpy, vi->screen), 0, 0, 100, 100, - 0, vi->depth, InputOutput, vi->visual, - CWBorderPixel|CWColormap|CWEventMask, &swa); - XMapWindow(dpy, win); - XIfEvent(dpy, &event, WaitForNotify, (char*)win); - - /* connect the context to the window */ - glXMakeCurrent(dpy, win, cx); - - /* clear the buffer */ - glClearColor(1,1,0,1); - glClear(GL_COLOR_BUFFER_BIT); - glFlush(); - if (swap_flag) glXSwapBuffers(dpy,win); - - /* wait a while */ - sleep(10); -} -.Ee -.SH NOTES -A color map must be created and passed to \f3XCreateWindow\fP. -See the preceding example code. -.P -A GLX context must be created and attached to an X drawable before -OpenGL commands can be executed. -OpenGL commands issued while no context/drawable pair is current -result in undefined behavior. -.P -Exposure events indicate that \f2all\fP buffers associated with the -specified window may be damaged and should be repainted. -Although certain buffers of some visuals on some systems -may never require repainting -(the depth buffer, for example), -it is incorrect to write a program assuming that these buffers will -not be damaged. -.P -GLX commands manipulate XVisualInfo structures rather than pointers to -visuals or visual IDs. -XVisualInfo structures contain \f2visual\fP, -\f2visualID\fP, -\f2screen\fP, and -\f2depth\fP elements, -as well as other X-specific information. -.SH USING GLX EXTENSIONS -All supported GLX extensions will have a corresponding definition in glx.h -and a token in the extension string returned by \f3glXQueryExtensionsString\fP. -For example, if the \f3EXT_visual_info\fP extension is supported, -then this token will be defined in glx.h and \f3EXT_visual_info\fP -will appear in the extension -string returned by \f3glXQueryExtensionsString\fP. The definitions in glx.h -can be used at compile time to determine if procedure calls corresponding -to an extension exist in the library. -.P -OpenGL itself has also been extended. Refer to \f3glIntro\fP for more -information. -.P -.SH GLX 1.1 and GLX 1.2 -GLX 1.2 is now supported. It is backward compatible with GLX 1.1 and -GLX 1.0. -.P -GLX 1.2 corresponds to OpenGL version 1.1 and introduces the following -new call: \f3glGetCurrentDisplay\fP. -.P -GLX 1.1 corresponds to OpenGL version 1.0 and introduces the -following new calls: -\f3glXQueryExtensionsString\fP, \f3glXQueryServerString\fP, and -\f3glXGetClientString\fP. -.P -Call \f3glQueryVersion\fP -to determine at runtime what version of GLX is available. \f3glQueryVersion\fP -returns the version that is supported on the connection. Thus -if 1.2 is returned, both the client and server support GLX 1.2. -You can also check the GLX version at compile time: GLX_VERSION_1_1 -will be defined in glx.h if GLX 1.1 calls are supported and -GLX_VERSION_1_2 will be defined if GLX 1.2 calls are supported. -.SH SEE ALSO -\f3glIntro\fP, -\f3glFinish\fP, -\f3glFlush\fP, -\f3glXChooseVisual\fP, -\f3glXCopyContext\fP, -.br -\f3glXCreateContext\fP, -\f3glXCreateGLXPixmap\fP, -\f3glXDestroyContext\fP, -.br -\f3glXGetClientString\fP, -\f3glXGetConfig\fP, -\f3glXIsDirect\fP, -\f3glXMakeCurrent\fP, -.br -\f3glXQueryExtension\fP, -\f3glXQueryExtensionsString\fP, -\f3glXQueryServerString\fP, -\f3glXQueryVersion\fP, -\f3glXSwapBuffers\fP, -\f3glXUseXFont\fP, -\f3glXWaitGL\fP, -\f3glXWaitX\fP, -\f3XCreateColormap\fP, -\f3XCreateWindow\fP, -\f3XSync\fP - - - - - - - - |