1991-2006 Silicon Graphics, Inc.
glXMakeContextCurrent 3G
glXMakeContextCurrent attach a GLX context to a GLX drawable

## C Specification

Bool `glXMakeContextCurrent` Display * display GLXDrawable draw GLXDrawable read GLXContext ctx

## Parameters

display

  Specifies the connection to the X server.

draw

  Specifies a GLX drawable to render into. Must be an XID representing a GLXWindow, GLXPixmap, or GLXPbuffer.

read

  Specifies a GLX drawable to read from. Must be an XID representing a GLXWindow, GLXPixmap, or GLXPbuffer.

ctx

  Specifies the GLX context to be bound to read and ctx.

## Description

`glXMakeContextCurrent` binds ctx to the current rendering thread and to the draw and read GLX drawables. draw and read may be the same.

draw is used for all OpenGL operations except:

Any pixel data that are read based on the value of `GLX_READ_BUFFER`. Note that accumulation operations use the value of `GLX_READ_BUFFER`, but are not allowed unless draw is identical to read.

Any depth values that are retrieved by glReadPixels or glCopyPixels.

Any stencil values that are retrieved by glReadPixels or glCopyPixels.

Frame buffer values are taken from draw.

If the current rendering thread has a current rendering context, that context is flushed and replaced by ctx.

The first time that ctx is made current, the viewport and scissor dimensions are set to the size of the draw drawable. The viewport and scissor are not modified when ctx is subsequently made current.

To release the current context without assigning a new one, call `glXMakeContextCurrent` with draw and read set to `None` and ctx set to `NULL`.

`glXMakeContextCurrent` returns `True` if it is successful, `False` otherwise. If `False` is returned, the previously current rendering context and drawable (if any) remain unchanged.

## Notes

`glXMakeContextCurrent` is available only if the GLX version is 1.3 or greater.

If the GLX version is 1.1 or 1.0, the GL version must be 1.0. If the GLX version is 1.2, then the GL version must be 1.1. If the GLX version is 1.3, then the GL version must be 1.2.

## Errors

`BadMatch` is generated if draw and read are not compatible.

`BadAccess` is generated if ctx is current to some other thread.

`GLXContextState` is generated if there is a current rendering context and its render mode is either `GLX_FEEDBACK` or `GLX_SELECT`.

`GLXBadContext` is generated if ctx is not a valid GLX rendering context.

`GLXBadDrawable` is generated if draw or read is not a valid GLX drawable.

`GLXBadWindow` is generated if the underlying X window for either draw or read is no longer valid.

`GLXBadCurrentDrawable` is generated if the previous context of the calling thread has unflushed commands and the previous drawable is no longer valid.

`BadAlloc` is generated if the X server does not have enough resources to allocate the buffers.

`BadMatch` is generated if:

draw and read cannot fit into frame buffer memory simultaneously.

draw or read is a GLXPixmap and ctx is a direct-rendering context.

draw or read is a GLXPixmap and ctx was previously bound to a GLXWindow or GLXPbuffer.

draw or read is a GLXWindow or GLXPbuffer and ctx was previously bound to a GLXPixmap.

## See Also

glXCreateNewContext, glXCreateWindow, glXCreatePixmap, glXCreatePbuffer, glXDestroyContext, glXGetCurrentContext, glXGetCurrentDisplay, glXGetCurrentDrawable, glXGetCurrentReadDrawable, glXMakeCurrent

## Copyright

Copyright 1991-2006 Silicon Graphics, Inc. This document is licensed under the SGI Free Software B License. For details, see http://oss.sgi.com/projects/FreeB/.