1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
'''OpenGL extension SGIX.dmbuffer
This module customises the behaviour of the
OpenGL.raw.GLX.SGIX.dmbuffer to provide a more
Python-friendly API
Overview (from the spec)
This extension introduces a new type of GLXPbuffer, a DM or Digital
Media pbuffer. A DM pbuffer is a GLXPbuffer that adopts one or more
of its buffers from an externally defined and allocated DMbuffer.
In this way it resembles a GLXPixmap that attaches to an existing
X pixmap. Like a standard pbuffer it can be used as a non-displayable
rendering area, or as a read source for pixel data. The externally
defined buffers of the DM pbuffer can be sequentially associated
with other DM buffers of the same size and configuration.
. The DM pbuffer is described with a new attrib passed to
glXCreateGLXPbuffer.
. A new GLX command allows associating a compatible DMbuffer with
the DM GLXPbuffer. At associate time the DM buffers described
by the DMparams are used directly as the corresponding
buffers of the GLXPbuffer drawable, as described by the FBconfig.
All other buffers that are part of the config will be created by
GL without externally referenceable names. A DM pbuffer must be
associated with a compatible DMbuffer before it can be made current
to a GLX context.
. The externally defined buffers of the DM pbuffer can be changed at
any time by successfully associating a new DMbuffer with the GLXPbuffer
through the associate command. It will be the application's
responsibility to synchronize DMedia, GLX, and GL commands that
effect the contents of the DM pbuffer.
. Any direct GLX rendering context that satisfies config compatibility
can be used to render to or read from a DM GLXPbuffer.
A currently associated DMbuffer may simultaneously be in use by
other clients on the same Display, but will not be destroyed
while associated with a GLXPbuffer. When the GLXpbuffer is
destroyed, all buffers that have no remaining clients, including
the DMbuffer, will be freed.
DM GLXPbuffers are proposed as a means for OpenGL to access buffers
generated by the VL, compression, and other digital media libraries in
a uniform way. The DMbuffer and DMparams descriptors are left
intentionally abstract so that the GLX extension can adapt to future
DM library changes.
The initial implementation will require that the DMparams descriptor
supply at least pixel format and packing information, and that the
DMbuffer provide the size and location of a colorbuffer. GLX will do
compatibility checking when possible based on the config, params, and
buffer information at associate time.
The official definition of this extension is available here:
http://www.opengl.org/registry/specs/SGIX/dmbuffer.txt
'''
from OpenGL import platform, constant, arrays
from OpenGL import extensions, wrapper
import ctypes
from OpenGL.raw.GLX import _types, _glgets
from OpenGL.raw.GLX.SGIX.dmbuffer import *
from OpenGL.raw.GLX.SGIX.dmbuffer import _EXTENSION_NAME
def glInitDmbufferSGIX():
'''Return boolean indicating whether this extension is available'''
from OpenGL import extensions
return extensions.hasGLExtension( _EXTENSION_NAME )
### END AUTOGENERATED SECTION
|