The PySide.QtOpenGL.QGLPixelBuffer class encapsulates an OpenGL pbuffer.
Rendering into a pbuffer is normally done using full hardware acceleration. This can be significantly faster than rendering into a PySide.QtGui.QPixmap .
There are three approaches to using this class:
As of Qt 4.8, it’s possible to render into a PySide.QtOpenGL.QGLPixelBuffer using a PySide.QtGui.QPainter in a separate thread. Note that OpenGL 2.0 or OpenGL ES 2.0 is required for this to work. Also, under X11, it’s necessary to set the Qt.AA_X11InitThreads application attribute.
Pbuffers are provided by the OpenGL pbuffer extension; call hasOpenGLPbuffer() to find out if the system provides pbuffers.
See also
Pbuffers Example
Parameters: |
|
---|
Constructs an OpenGL pbuffer of the given size . If no format is specified, the default format is used. If the shareWidget parameter points to a valid PySide.QtOpenGL.QGLWidget , the pbuffer will share its context with shareWidget .
If you intend to bind this pbuffer as a dynamic texture, the width and height components of size must be powers of two (e.g., 512 x 128).
This is an overloaded function.
Constructs an OpenGL pbuffer with the width and height . If no format is specified, the default format is used. If the shareWidget parameter points to a valid PySide.QtOpenGL.QGLWidget , the pbuffer will share its context with shareWidget .
If you intend to bind this pbuffer as a dynamic texture, the width and height components of size must be powers of two (e.g., 512 x 128).
Parameters: | fileName – unicode |
---|---|
Return type: | PySide.QtOpenGL.GLuint |
This is an overloaded function.
Reads the DirectDrawSurface (DDS) compressed file fileName and generates a 2D GL texture from it.
Equivalent to calling QGLContext.bindTexture() .
Parameters: |
|
---|---|
Return type: | PySide.QtOpenGL.GLuint |
This is an overloaded function.
Generates and binds a 2D GL texture based on pixmap .
Equivalent to calling QGLContext.bindTexture() .
Parameters: |
|
---|---|
Return type: | PySide.QtOpenGL.GLuint |
Generates and binds a 2D GL texture to the current context, based on image . The generated texture id is returned and can be used in later glBindTexture() calls.
The target parameter specifies the texture target.
Equivalent to calling QGLContext.bindTexture() .
Parameters: | texture – PySide.QtOpenGL.GLuint |
---|---|
Return type: | PySide.QtCore.bool |
Binds the texture specified by texture_id to this pbuffer. Returns true on success; otherwise returns false.
The texture must be of the same size and format as the pbuffer.
To unbind the texture, call PySide.QtOpenGL.QGLPixelBuffer.releaseFromDynamicTexture() . While the texture is bound, it is updated automatically when the pbuffer contents change, eliminating the need for additional copy operations.
Example:
pbuffer QGLPixelBuffer(...)
...
pbuffer.makeCurrent()
dynamicTexture = pbuffer.generateDynamicTexture()
pbuffer.bindToDynamicTexture(dynamicTexture)
...
pbuffer.releaseFromDynamicTexture()
Warning
This function uses the render_texture extension, which is currently not supported under X11. An alternative that works on all systems (including X11) is to manually copy the pbuffer contents to a texture using PySide.QtOpenGL.QGLPixelBuffer.updateDynamicTexture() .
Warning
For the PySide.QtOpenGL.QGLPixelBuffer.bindToDynamicTexture() call to succeed on the Mac OS X, the pbuffer needs a shared context, i.e. the PySide.QtOpenGL.QGLPixelBuffer must be created with a share widget.
Parameters: | texture_id – PySide.QtOpenGL.GLuint |
---|
Removes the texture identified by texture_id from the texture cache.
Equivalent to calling QGLContext.deleteTexture() .
Return type: | PySide.QtCore.bool |
---|
Makes no context the current OpenGL context. Returns true on success; otherwise returns false.
Parameters: |
|
---|
Draws the given texture, textureId , at the given point in OpenGL model space. The textureTarget parameter should be a 2D texture target.
Equivalent to the corresponding QGLContext.drawTexture() .
Parameters: |
|
---|
Draws the given texture, textureId , to the given target rectangle, target , in OpenGL model space. The textureTarget should be a 2D texture target.
Equivalent to the corresponding QGLContext.drawTexture() .
Return type: | PySide.QtOpenGL.QGLFormat |
---|
Returns the format of the pbuffer. The format may be different from the one that was requested.
Return type: | PySide.QtOpenGL.GLuint |
---|
Return type: | PySide.QtCore.Qt::HANDLE |
---|
Returns the native pbuffer handle.
Return type: | PySide.QtCore.bool |
---|
Returns true if the OpenGL pbuffer extension is present on this system; otherwise returns false.
Return type: | PySide.QtCore.bool |
---|
Returns true if this pbuffer is valid; otherwise returns false.
Return type: | PySide.QtCore.bool |
---|
Makes this pbuffer the current OpenGL rendering context. Returns true on success; otherwise returns false.
Releases the pbuffer from any previously bound texture.
Return type: | PySide.QtCore.QSize |
---|
Returns the size of the pbuffer.
Return type: | PySide.QtGui.QImage |
---|
Returns the contents of the pbuffer as a PySide.QtGui.QImage .
Parameters: | texture_id – PySide.QtOpenGL.GLuint |
---|
Copies the pbuffer contents into the texture specified with texture_id .
The texture must be of the same size and format as the pbuffer.
Example:
pbuffer QGLPixelBuffer(...)
...
pbuffer.makeCurrent()
dynamicTexture = pbuffer.generateDynamicTexture()
...
pbuffer.updateDynamicTexture(dynamicTexture)
An alternative on Windows and Mac OS X systems that support the render_texture extension is to use PySide.QtOpenGL.QGLPixelBuffer.bindToDynamicTexture() to get dynamic updates of the texture.