glXMakeCurrentReadSGI(3G)
glXMakeCurrentReadSGI - attach a GLX context to separate read and write drawables
As shipped in IRIX 6.5.19. Last changed in IRIX 6.5.15.
NAME glXMakeCurrentReadSGI - attach a GLX context to separate read and write drawables C SPECIFICATION Bool glXMakeCurrentReadSGI( Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext gc ) PARAMETERS dpy Specifies the connection to the X server. draw A GLX drawable that receives the results of OpenGL drawing operations. read A GLX drawable that provides pixels for glReadPixels and glCopyPixels operations. gc A GLX rendering context to be attached to draw and read. DESCRIPTION glXMakeCurrentReadSGI performs the same functions as glXMakeCurrent, with one important difference: it attaches a GLX context to two drawables, rather than one. The second drawable serves as the source for any pixel data that are read by glReadPixels, glCopyPixels, and OpenGL extension commands that read color, depth, or stencil data from the framebuffer. It may be an ordinary GLX drawable, or it may be a GLX video source (see glXCreateGLXVideoSourceSGIX). Accumulation operations (see glAccum) are not allowed when draw is not identical to read. It is not necessary for draw and read to have the same ancillary buffers. It is also not necessary for read to contain a buffer corresponding to the current GL_READ_BUFFER of gc. For example, the current GL_READ_BUFFER of gc might be GL_BACK, and read might be single-buffered. If there is no corresponding buffer in read, then the pixel values extracted from read will be undefined, but no error will be generated. Operations that query the value of GL_READ_BUFFER use the value set last in gc, regardless of whether read has the corresponding buffer. glXMakeCurrentReadSGI returns True if it is successful, False otherwise. If False is returned, the previously current rendering context and drawables (if any) remain unchanged. ERRORS BadMatch is generated if any of the following conditions hold: 1. draw was not created on the same X screen and visual as gc. 2. read was not created on the same X screen as gc. 3. draw is None and gc is not None. 4. draw is a GLX video source. BadAccess is generated if gc was current to another thread at the time glXMakeCurrentReadSGI was called. GLXBadDrawable is generated if either draw or read is not a valid GLX drawable. GLXBadContext is generated if gc is not a valid GLX context. GLXBadContextState is generated if glXMakeCurrentReadSGI is called between a glBegin and the corresponding call to glEnd. GLXBadContextState is also generated if the rendering context current to the calling thread has OpenGL renderer state GL_FEEDBACK or GL_SELECT. GLXBadCurrentWindow is generated if there are pending OpenGL commands for the previous context and the current drawable is a window that is no longer valid. BadAlloc may be generated if the server has delayed allocation of ancillary buffers until glXMakeCurrentReadSGI is called, only to find that it has insufficient resources to complete the allocation. MACHINE DEPENDENCIES The SGI_make_current_read extension is supported on RealityEngine, RealityEngine2, and VTX systems with the following restrictions: 1. A BadMatch error is generated if a. draw is RGBA and read is not, or vice versa. A video source (see glXCreateGLXVideoSourceSGIX) is considered to be RGBA. b. read is not a video source and it does not have the same color component resolution or the same number of index bits as draw; c. Either draw or read is not at buffer level 0 (the main frame buffer planes, rather than overlay planes). d. draw is multisample capable and readP is a pbuffer (see glXCreateGLXPbufferSGIX). 2. When draw is a pixmap then read must be the same pixmap. A BadAlloc error is generated otherwise. On RealityEngine, RealityEngine2, and VTX, on InfiniteReality, on High Impact and Maximum Impact, on Solid Impact systems, on O2 systems, and on Octane2 VPro systems, it is not possible to use a context for rendering to both windows and pixmaps. SEE ALSO glXMakeCurrent, glXCreateContext, glXGetCurrentContext, glXGetCurrentDisplay, glXGetCurrentDrawable, glXGetCurrentReadDrawable