INFO: Layer Planes in OpenGLID: Q169954
|
Layer Planes are a new feature in the Microsoft implementation of OpenGL 1.1. Before using OpenGL layer planes, there are several new functions and some driver dependency issues that you should be aware of.
The generic implementation of OpenGL does not support layer planes. You
must have a 3D accelerated video card and driver that implement layer plane
functionality. To programmatically determine whether your implementation
supports layer planes, you should enumerate the available pixel formats and
look for one that has the bReserved member set to a non-zero value (see the
GLEnum sample for more information on pixel format enumeration). The
bReserved member of the PIXELFORMATDESCRIPTOR structure now contains the number of overlay and underlay planes. Bits 0 through 3 specify up to 15 overlay planes and bits 4 through 7 specify up to 15 underlay planes.
Before creating a rendering context based on a particular layer plane, you
can obtain detailed information about the layer plane by calling
wglDescribeLayerPlane. This function will give you a LAYERPLANEDESCRIPTOR
structure that fully describes the layer plane. This structure is analogous
to the PIXELFORMATDESCRIPTOR structure with 2 important exceptions. First, there is an additional flag in the dwFlags member, LPD_TRANSPARENT, which means that the plane is transparent if it is set (that is, lower-numbered planes will show through this plane). Second, the transparent portion of the plane is determined by the crTransparent member which specifies either a color index (when in color-index mode) or a color (when in RGBA mode).
If you have a valid PIXELFORMATDESCRIPTOR that supports layer planes, you can then set it using SetPixelFormat. Once you have a valid "multiple layer plane" HDC set up, you can create an OpenGL rendering context for one of the layer planes by calling wglCreateLayerContext with your HDC as the first parameter. The second parameter of wglCreateLayerContext specifies
the layer plane to which the new rendering context is bound (positive
values correspond to overlays while negative values correspond to
underlays). Layer Plane 0 is the "main" plane (that is, the plane that
would be used if you simply called wglCreateContext instead).
Once you have an OpenGL rendering context for a particular layer plane, you
can use that rendering context in the typical way (that is, by calling
wglMakeCurrent, followed by your OpenGL code, followed by
wglMakeCurrent(NULL, NULL)). Don't forget to delete the rendering context when finished with it by calling wglDeleteContext.
Additional query words: opengl layerplane under over lpd
Keywords : kbgraphic kbSDKWin32
Version : WINDOWS:
Platform : WINDOWS
Issue type : kbinfo
Last Reviewed: June 15, 1999