Home · All Classes · Modules · QSS HELP · QSS 案例 · VER007 HOME |
该QGLFramebufferObject类封装了一个OpenGL帧缓冲区对象。More...
继承QPaintDevice。
该QGLFramebufferObject类封装了一个OpenGL帧缓冲区对象。
该QGLFramebufferObject类封装了一个OpenGL帧缓冲区对象,由定义GL_EXT_framebuffer_object扩展名。此外,它提供了一种渲染表面,可以涂在用QPainter,呈现给使用本地GL调用,或两者兼而有之。这种表面可以在自己的GL绘图代码的约束,并作为一个普通的纹理。默认情况下, QGLFramebufferObject类生成一个2D GL纹理(使用GL_TEXTURE_2D目标) ,它是用来作为内部渲染对象。
It is important to have a current GL context when creating a QGLFramebufferObject, otherwise initialization will fail.
OpenGL的帧缓冲对象和pbuffers的(见QGLPixelBuffer)都可以用来渲染到屏幕外表面,但也有许多与使用帧缓冲区对象而不是pbuffers的优点:
当使用一个QPainter画一个QGLFramebufferObject的QGLFramebufferObject与创建时要注意CombinedDepthStencil附件QPainter要能正确呈现。请注意,您需要使用绘图时创建每像素多于一个样本的QGLFramebufferObject对原语进行反锯齿QPainter。要创建一个多重采样帧缓冲区对象,你应该使用采取QGLFramebufferObject参数的构造函数之一,并设置QGLFramebufferObject.samples ()属性设置为一个非零值。
当画到QGLFramebufferObject使用QPainter,目前GL上下文的状态将由绘图引擎进行修改,以反映其需求。应用程序不应依赖于GL状态被重置到其原始条件,特别是目前的着色器程序,吉尔口中,纹理单元和绘图模式。
对于多重采样帧缓冲对象的颜色渲染在创建缓冲区,否则创建具有指定目标的质感纹理。色彩渲染缓冲器或纹理将具有指定的内部格式,并且将被绑定到GL_COLOR_ATTACHMENT0附件中的帧缓冲区对象。
如果你想使用一个帧缓冲对象启用多重采样作为纹理,你首先需要从它复制到使用QGLContext.blitFramebuffer ( )一个普通帧缓冲区对象。
由于Qt的4.8的,有可能用来绘制成QGLFramebufferObject一个QPainter在一个单独的线程。需要注意的是OpenGL的2.0或OpenGL ES 2.0的是需要这种合作。此外, X11下,有必要设置Qt.AA_X11InitThreads应用属性。
该枚举类型是用来配置连接到帧缓冲对象被创建时,它的深度和模板缓冲区。
Constant | Value | Description |
---|---|---|
QGLFramebufferObject.NoAttachment | 0 | 没有附件被添加到帧缓冲区对象。需要注意的是渲染到帧缓冲区对象,没有任何深度或模板缓冲区时, OpenGL的深度和模板测试将无法正常工作。这是默认值。 |
QGLFramebufferObject.CombinedDepthStencil | 1 | 如果GL_EXT_packed_depth_stencil扩展目前,结合深度和模板缓存连接。如果扩展名不存在,只有深度缓冲区连接。 |
QGLFramebufferObject.Depth | 2 | 深度缓冲连接到帧缓冲区对象。 |
这个枚举被引入或修改的Qt 4.3 。
See also attachment( ) 。
构造一个OpenGL帧缓冲区对象和一个2D GL纹理结合到大小的缓冲size。纹理被绑定到GL_COLOR_ATTACHMENT0针对在帧缓冲对象。
该target参数用于指定总帐质感目标。默认的目标是GL_TEXTURE_2D。请记住,GL_TEXTURE_2D纹理必须有2宽度和高度(如256×512个)的功率,除非你正在使用的OpenGL 2.0或更高版本。
默认情况下,没有深度和模板缓冲区连接。这种行为可以使用重载的构造函数之一进行切换。
默认的内部纹理格式是GL_RGBA8对于桌面OpenGL ,和GL_RGBA为OpenGL / ES 。
你有一个当前的GL上下文创建时设置是很重要的QGLFramebufferObject,否则初始化将失败。
See also size( )texture()和attachment( ) 。
这是一个重载函数。
构造一个OpenGL帧缓冲区对象和GL 2D纹理绑定到给定缓冲区width和height。
这是一个重载函数。
构造给定一个OpenGL帧缓冲区对象size基于所提供的format。
这是一个重载函数。
构造给定一个OpenGL帧缓冲区对象width和height基于所提供的format。
这是一个重载函数。
构造一个OpenGL帧缓冲区对象和纹理绑定到给定缓冲区width和height。
该attachment参数描述了深度/模板缓存配置,target纹理和目标internal_format内部纹理格式。默认质感的目标是GL_TEXTURE_2D,而默认的内部格式是GL_RGBA8桌面OpenGL和GL_RGBA为OpenGL / ES 。
See also size( )texture()和attachment( ) 。
这是一个重载函数。
构造一个OpenGL帧缓冲区对象和纹理绑定到给定缓冲区size。
该attachment参数描述了深度/模板缓存配置,target纹理和目标internal_format内部纹理格式。默认质感的目标是GL_TEXTURE_2D,而默认的内部格式是GL_RGBA8桌面OpenGL和GL_RGBA为OpenGL / ES 。
See also size( )texture()和attachment( ) 。
返回附加到该帧缓冲区对象的深度和模具缓冲器的状态。
从默认的开关渲染,窗口提供系统的framebuffer来此帧缓冲区对象。成功时返回真,否则返回False。
See also release( ) 。
从位块传输sourceRect矩形的source帧缓冲区对象的targetRect矩形的target帧缓冲区对象。
If source or target是0 ,则默认帧缓冲区将被用于一个帧缓冲对象作为源或目标,而不是分别。
该buffers参数应该包括任何组合的掩模GL_COLOR_BUFFER_BIT,GL_DEPTH_BUFFER_BIT和GL_STENCIL_BUFFER_BIT。任何未在源和目标缓冲器呈现两个缓冲器类型被忽略。
该sourceRect和targetRect矩形可以有不同的大小,在这种情况buffers不应该包含GL_DEPTH_BUFFER_BIT or GL_STENCIL_BUFFER_BIT。该filter参数应该被设置为GL_LINEAR or GL_NEAREST以及指定是否线性的或最接近的内插时,执行缩放应该被使用。
If source等于target副本相同的缓冲区内进行。结果是不确定的,如果源和目标矩形重叠,并且具有不同的尺寸。的大小也必须相同,如果任何帧缓冲的对象是多重采样的帧缓冲区。
请注意,如果启用了剪刀测试将限制位块传输的区域。
此功能不会有任何影响,除非hasOpenGLFramebufferBlit( )返回True 。
此功能被引入Qt的4.6 。
See also hasOpenGLFramebufferBlit( ) 。
绘制给定的质感,textureId向给定目标矩形,target在OpenGL的模型空间。该textureTarget应该是一个2D纹理的目标。
帧缓冲对象应该调用这个函数时的约束。
等同于相应的QGLContext.drawTexture( ) 。
此功能被引入Qt的4.4 。
绘制给定的质感,textureId,在给定的point在OpenGL的模型空间。该textureTarget应该是一个2D纹理的目标。
帧缓冲对象应该调用这个函数时的约束。
等同于相应的QGLContext.drawTexture( ) 。
此功能被引入Qt的4.4 。
返回此帧缓冲区对象的格式。
返回此帧缓冲区对象的GL帧缓冲对象句柄(由返回glGenFrameBuffersEXT()功能)。这个句柄可以被用来连接新的图像或缓冲区的帧缓冲。用户是负责清理和销毁这些对象。
返回True如果OpenGL的GL_EXT_framebuffer_blit扩展出现在这个系统上,否则返回False 。
此功能被引入Qt的4.6 。
See also blitFramebuffer( ) 。
返回True如果OpenGL的GL_EXT_framebuffer_object扩展出现在这个系统上,否则返回False 。
如果帧缓冲区对象当前绑定到一个上下文,否则返回False ,则返回True 。
此功能被引入Qt的4.5 。
返回True如果帧缓冲对象是有效的。
如果初始化进程失败时,使用者将一个无效缓存到帧缓冲区对象,或者两种宽度/高度的非功率被指定为纹理大小,如果纹理是目标帧缓冲可以成为无效GL_TEXTURE_2D。两条限制非电力不适用,如果OpenGL版本为2.0或更高版本,或者如果GL_ARB_texture_non_power_of_two扩展存在。
帧缓冲也可以成为无效的,如果QGLContext该帧缓存创建内被破坏,并且没有其他共享的上下文,可以采取在帧缓冲区的所有权。
从重新实现QPaintDevice.metric( ) 。
从重新实现QPaintDevice.paintEngine( ) 。
切换渲染回默认的,窗口提供系统的framebuffer 。成功时返回真,否则返回False。
See also bind( ) 。
返回附加到该帧缓冲区对象的纹理的大小。
返回纹理ID为连接作为默认渲染目标在此帧缓冲区对象的质感。这种质地的id可以在自己的总帐代码绑定作为一个正常的质感。
如果一个多重采样帧缓冲区对象被使用,那么从这个函数返回的值将是无效的。
返回此帧缓冲区对象的内容作为QImage。
PyQt 4.10.3 for X11 | Copyright © Riverbank Computing Ltd and Nokia 2012 | Qt 4.8.5 |