Home · All Classes · Modules · QSS HELP · QSS 案例 · VER007 HOME |
该QGLFormat类指定一个OpenGL渲染上下文的显示格式。More...
该QGLFormat类指定一个OpenGL渲染上下文的显示格式。
一种显示格式有几个特点:
您也可以指定首选位深度的颜色缓冲,深度缓冲,阿尔法缓冲,缓冲的积累以及与功能模板缓冲区:setRedBufferSize( )setGreenBufferSize( )setBlueBufferSize( )setDepthBufferSize( )setAlphaBufferSize( )setAccumBufferSize()和setStencilBufferSize( ) 。
请注意,即使您指定你喜欢一个32位深度缓冲(如带setDepthBufferSize ( 32 ) ) ,选择该格式可能不具有一个32位的深度缓冲区,即使有可用的带有32位深度缓冲的格式。主要的原因是系统依赖采摘算法在不同的平台上是如何工作的,以及一些格式选项可能有优先级比别人高。
您可以创建和告诉QGLFormat对象,你想从一个OpenGL渲染上下文是什么渲染选项。
OpenGL驱动程序或硬件加速的可能或可能不支持高级功能,例如alpha通道或立体视。如果您要求一些功能,驱动器/硬件不提供当你创建一个QGLWidget,你会得到一个渲染上下文的功能最接近的子集。
有不同的方式来定义一个渲染上下文的显示特性。一个是创建一个QGLFormat并使其成为默认为整个应用程序:
QGLFormat fmt; fmt.setAlpha(true); fmt.setStereo(true); QGLFormat.setDefaultFormat(fmt);
或者,您可以创建一个对象时指定所需的格式的QGLWidget子类:
QGLFormat fmt; fmt.setDoubleBuffer(false); // single buffer fmt.setDirectRendering(false); // software rendering MyGLWidget* myWidget = new MyGLWidget(fmt, ...);
窗口小部件被创建之后,你可以找出其中所要求的功能的系统能够提供:
QGLFormat fmt; fmt.setOverlay(true); fmt.setStereo(true); MyGLWidget* myWidget = new MyGLWidget(fmt, ...); if (!myWidget->format().stereo()) { // ok, goggles off if (!myWidget->format().hasOverlay()) { qFatal("Cool hardware required"); } }
OpenGL是Silicon Graphics公司在美国和其他国家的商标。
这个枚举变量描述了可以为上下文实现的OpenGL 3.2或更高版本中指定的OpenGL上下文配置文件。这些配置文件是从OpenGL ES的配置文件不同。
Constant | Value | Description |
---|---|---|
QGLFormat.NoProfile | 0 | OpenGL的版本比3.2更低。 |
QGLFormat.CoreProfile | 1 | 不推荐使用的功能在OpenGL 3.0版无法使用。 |
QGLFormat.CompatibilityProfile | 2 | 从早期的OpenGL版本功能可用。 |
这个枚举被引入或修改的Qt 4.7 。
这个枚举变量描述了各种OpenGL版本是由Qt的认可。使用QGLFormat.openGLVersionFlags( )函数来确定哪些版本的在运行时支持。
Constant | Value | Description |
---|---|---|
QGLFormat.OpenGL_Version_None | 0x00000000 | 如果没有OpenGL是或者没有OpenGL上下文是最新的。 |
QGLFormat.OpenGL_Version_1_1 | 0x00000001 | OpenGL版本1.1或更高版本存在。 |
QGLFormat.OpenGL_Version_1_2 | 0x00000002 | OpenGL版本1.2或更高版本存在。 |
QGLFormat.OpenGL_Version_1_3 | 0x00000004 | OpenGL版本1.3或更高版本存在。 |
QGLFormat.OpenGL_Version_1_4 | 0x00000008 | OpenGL版本1.4或更高版本存在。 |
QGLFormat.OpenGL_Version_1_5 | 0x00000010 | OpenGL版本1.5或更高版本存在。 |
QGLFormat.OpenGL_Version_2_0 | 0x00000020 | OpenGL版本2.0或更高版本存在。请注意, 2.0版支持1.5版的所有功能。 |
QGLFormat.OpenGL_Version_2_1 | 0x00000040 | OpenGL的2.1或更高版本的存在。 |
QGLFormat.OpenGL_Version_3_0 | 0x00001000 | OpenGL版本3.0或更高版本存在。 |
QGLFormat.OpenGL_Version_3_1 | 0x00002000 | OpenGL的3.1或更高的版本存在。需要注意的是OpenGL的3.1或更高版本不一定支持3.0版和更低的所有功能。 |
QGLFormat.OpenGL_Version_3_2 | 0x00004000 | OpenGL版本3.2或更高版本存在。 |
QGLFormat.OpenGL_Version_3_3 | 0x00008000 | OpenGL版本3.3或更高版本存在。 |
QGLFormat.OpenGL_Version_4_0 | 0x00010000 | OpenGL版本4.0或更高版本存在。 |
QGLFormat.OpenGL_ES_CommonLite_Version_1_0 | 0x00000100 | 的OpenGL ES 1.0版通用精简版或更高版本存在。 |
QGLFormat.OpenGL_ES_Common_Version_1_0 | 0x00000080 | OpenGL ES的1.0版本通用或更高版本存在。 Common文件支持常见的精简版的所有功能。 |
QGLFormat.OpenGL_ES_CommonLite_Version_1_1 | 0x00000400 | 的OpenGL ES 1.1版通用精简版或更高版本存在。 |
QGLFormat.OpenGL_ES_Common_Version_1_1 | 0x00000200 | OpenGL ES的1.1版本通用或更高版本存在。 Common文件支持常见的精简版的所有功能。 |
QGLFormat.OpenGL_ES_Version_2_0 | 0x00000800 | 的OpenGL ES 2.0或更高版本存在。需要注意的是OpenGL ES的2.0版本不支持的OpenGL ES 1.x的所有功能所以,如果OpenGL_ES_Version_2_0返回,返回没有的ES 1.x的标志。 |
另请参阅http://www.opengl.org关于OpenGL的不同版本的更多信息。
这个枚举被引入或修改的Qt 4.2 。
该OpenGLVersionFlags类型是一个typedef为QFlags\u003cOpenGLVersionFlag\u003e 。它存储OpenGLVersionFlag值的或组合。
See also openGLVersionFlags( ) 。
构造一个QGLFormat用下面的默认设置对象:
创建QGLFormat对象,它是当前的一个副本defaultFormat( ) 。
If options不为0 ,则默认格式是由特定的格式选项修改。该options参数应该是QGL.FormatOption值OR'ed在一起。
这个构造函数可以很容易地从指定的派生类一定想要的格式QGLWidget例如:
// The rendering in MyGLWidget depends on using // stencil buffer and alpha channel MyGLWidget.MyGLWidget(QWidget* parent) : QGLWidget(QGLFormat(QGL.StencilBuffer | QGL.AlphaChannel), parent) { if (!format().stencil()) qWarning("Could not get stencil buffer; results will be suboptimal"); if (!format().alpha()) qWarning("Could not get alpha channel; results will be suboptimal"); ... }
请注意,有QGL.FormatOption值开启和关闭都,如格式设置QGL.DepthBuffer和QGL.NoDepthBuffer,QGL.DirectRendering和QGL.IndirectRendering等。
该plane参数默认为0 ,并且是这种格式应该与相关的平面。并非所有的OpenGL实现支持复盖/衬底渲染的飞机。
See also defaultFormat( )setOption()和setPlane( ) 。
构造的副本other。
返回True如果累积缓冲器被启用,否则返回False 。积累缓冲区默认是禁用的。
See also setAccum()和setAccumBufferSize( ) 。
返回累积缓冲区的大小。
See also setAccumBufferSize( )accum()和setAccum( ) 。
返回True如果在framebuffer的阿尔法缓冲启用,否则返回False 。阿尔法缓冲默认情况下禁用。
See also setAlpha()和setAlphaBufferSize( ) 。
返回阿尔法缓冲区大小。
See also alpha( )setAlpha()和setAlphaBufferSize( ) 。
返回蓝色的缓冲区大小。
这个函数中引入了Qt 4.2中。
See also setBlueBufferSize( ) 。
返回默认QGLFormat应用程序。所有QGLWidget除非指定了其他格式的创建使用这种格式的对象,如当它们被构造。
如果没有特殊的默认格式已设定使用setDefaultFormat() ,默认格式是相同的,与建立QGLFormat( ) 。
See also setDefaultFormat( ) 。
返回默认QGLFormat对于叠加背景。
默认叠加格式为:
See also setDefaultOverlayFormat()和setDefaultFormat( ) 。
返回True如果深度缓冲被启用,否则返回False 。深度缓存是默认启用的。
See also setDepth()和setDepthBufferSize( ) 。
返回深度缓冲区的大小。
See also depth( )setDepth()和setDepthBufferSize( ) 。
返回True如果直接渲染启用,否则返回False 。
直接渲染是默认启用的。
See also setDirectRendering( ) 。
返回True如果双缓冲使能,否则返回False 。双缓冲是默认启用的。
See also setDoubleBuffer( ) 。
返回绿化缓冲区大小。
这个函数中引入了Qt 4.2中。
See also setGreenBufferSize( ) 。
返回True如果窗口系统有任何的OpenGL支持,否则返回False 。
Warning:此函数不能被调用,直到QApplication对象被创建。
返回True如果窗口系统支持OpenGL复盖,否则返回False 。
Warning:此函数不能被调用,直到QApplication对象被创建。
返回True如果复盖面已启用,否则返回False 。
复盖默认是禁用的。
See also setOverlay( ) 。
返回OpenGL的主要版本。
此功能被引入Qt的4.7 。
See also setVersion()和minorVersion( ) 。
返回OpenGL的次要版本。
此功能被引入Qt的4.7 。
See also setVersion()和majorVersion( ) 。
标识,在运行时,它的OpenGL是由当前平台支持的版本。
请注意,如果OpenGL版本1.5的支持,也支持它的前辈(即1.4版,下) 。识别特定功能的支持,如多纹理,测试中首次引入的功能的版本(即版本在多纹理的情况下1.3) ,以适应运行时平台的最大可能的组。
此功能需要一个有效的当前的OpenGL上下文中工作,否则它会返回OpenGL_Version_None。
这个函数中引入了Qt 4.2中。
See also hasOpenGL()和hasOpenGLOverlays( ) 。
返回此格式的平面。默认为正常格式是0,这意味着在正常平面。默认为复盖格式是1 ,这是第一个复盖面。
See also setPlane()和defaultOverlayFormat( ) 。
返回OpenGL上下文配置文件。
此功能被引入Qt的4.7 。
See also setProfile( ) 。
返回红色的缓冲区大小。
这个函数中引入了Qt 4.2中。
See also setRedBufferSize( ) 。
返回True如果RGBA颜色模式设置。返回False,如果颜色索引模式设置。默认的色彩模式是RGBA 。
See also setRgba( ) 。
返回True如果多重采样缓冲支持允许,否则返回False 。
多重采样缓冲区默认是禁用的。
See also setSampleBuffers( ) 。
返回每个像素的样本多重采样时启用的数量。默认情况下,最高的样本数是可被使用。
See also setSampleBuffers( )sampleBuffers()和setSamples( ) 。
If enable是真正的使积累缓冲,否则将禁用积累缓冲区。
积累缓冲区默认是禁用的。
积累缓冲区用于创建模糊效果和多重曝光。
See also accum()和setAccumBufferSize( ) 。
设置首选累加缓冲器的大小,其中size是比特深度的每个RGBA分量。
See also accum( )setAccum()和accumBufferSize( ) 。
If enable是真的让阿尔法缓冲,否则将禁用阿尔法缓冲区。
阿尔法缓冲默认情况下禁用。
阿尔法缓冲器通常用于实现透明性或半透明性。 RGBA中的A指定像素的透明度。
See also alpha()和setAlphaBufferSize( ) 。
设置优选的α缓冲区的大小为size。此功能允许隐式的alpha通道。
See also setRedBufferSize( )setGreenBufferSize()和alphaBufferSize( ) 。
设置首选蓝色的缓冲区大小size。
这个函数中引入了Qt 4.2中。
See also blueBufferSize( )setRedBufferSize( )setGreenBufferSize()和setAlphaBufferSize( ) 。
设置新的默认QGLFormat为应用程序f。例如,要设置单缓冲为默认,而不是双缓冲,你的main()中可能包含这样的代码:
QApplication a(argc, argv); QGLFormat f; f.setDoubleBuffer(false); QGLFormat.setDefaultFormat(f);
See also defaultFormat( ) 。
设置新的默认QGLFormat为复盖到上下文f。这个格式被用于每当一个QGLWidget与一个格式创建的hasOverlay( )启用。
例如,要获得双重缓冲的复盖范围内(如果有的话) ,使用如下代码:
QGLFormat f = QGLFormat.defaultOverlayFormat(); f.setDoubleBuffer(true); QGLFormat.setDefaultOverlayFormat(f);
像往常一样,你可以创建小部件的底层OpenGL的系统是否能够提供所要求的规格后发现:
// ...continued from above MyGLWidget* myWidget = new MyGLWidget(QGLFormat(QGL.HasOverlay), ...); if (myWidget->format().hasOverlay()) { // Yes, we got an overlay, let's check _its_ format: QGLContext* olContext = myWidget->overlayContext(); if (olContext->format().doubleBuffer()) ; // yes, we got a double buffered overlay else ; // no, only single buffered overlays are available }
See also defaultOverlayFormat( ) 。
If enable是真正的使深度缓冲区,否则禁用深度缓冲。
深度缓存是默认启用的。
深度缓冲(或Z缓冲)的目的是去除隐藏的表面。像素的基础上,以观众的距离分配的Z值。具有高Z值的像素更靠近观看者比具有低Z值的像素。此信息用于决定是否要绘制的像素或没有。
See also depth()和setDepthBufferSize( ) 。
设置最小深度缓冲区的大小为size。
See also depthBufferSize( )setDepth()和depth( ) 。
If enable是真的,可直接渲染,否则禁止直接渲染。
直接渲染是默认启用的。
启用此选项将使绕过OpenGL的底层窗口系统,并直接从硬件渲染到屏幕上,如果这是支持的系统。
See also directRendering( ) 。
If enable是真正的集双缓冲,否则设置一个缓冲。
双缓冲是默认启用的。
双缓冲就是图形呈现在屏幕外的缓冲区,而不是直接到屏幕上的技术。当绘图完成时,程序调用一个swapBuffers ()函数来交换与缓冲器中的画面的内容。其结果是无闪烁画图,常常更好的性能。
需要注意的是单缓冲环境目前不支持与EGL 。
See also doubleBuffer( )QGLContext.swapBuffers()和QGLWidget.swapBuffers( ) 。
设置首选的绿色缓冲区大小size。
这个函数中引入了Qt 4.2中。
See also greenBufferSize( )setRedBufferSize( )setBlueBufferSize()和setAlphaBufferSize( ) 。
设置格式选项opt。
See also testOption( ) 。
If enable是真的让一个复盖面,否则禁止复盖面。
启用复盖面会造成QGLWidget创建一个复盖面的附加上下文。请参阅QGLWidget文档了解更多信息。
See also hasOverlay( ) 。
所要求的平面设置为plane。 0是正常的平面中, 1是第一复盖面, 2是第二复盖面等; -1,-2等是底层平面。
请注意,相对于其他格式规范,飞机规格将完全匹配。这意味着,如果你指定一个平面底层OpenGL的系统不能提供,一个invalid QGLWidget将被创建。
See also plane( ) 。
设置OpenGL上下文配置文件profile。该profile如果所请求的OpenGL版本小于3.2被忽略。
此功能被引入Qt的4.7 。
See also profile( ) 。
设置首选红色的缓冲区大小size。
这个函数中引入了Qt 4.2中。
See also redBufferSize( )setGreenBufferSize( )setBlueBufferSize()和setAlphaBufferSize( ) 。
If enable是真正的集RGBA模式。如果enable是假套颜色索引模式。
默认的色彩模式是RGBA 。
RGBA是大多数的OpenGL应用程序的首选模式。在RGBA颜色模式指定的颜色为红+绿+蓝+阿尔法四胞胎。
在颜色索引模式中指定一个索引颜色查找表。
See also rgba( ) 。
If enable诚然,一个GL上下文与多重采样缓冲支持回升,否则忽略。
See also sampleBuffers( )setSamples()和samples( ) 。
设置每个像素的样本的首选号码时,多重采样已启用numSamples。默认情况下,最多可用样本的使用。
See also setSampleBuffers( )sampleBuffers()和samples( ) 。
If enable是真正的使模板缓冲,否则将禁用模板缓存。
模板缓冲区是默认启用的。
模板缓冲区口罩绘图区域的某些部分,这样蒙面零件不上绘制。
See also stencil()和setStencilBufferSize( ) 。
设置首选模板缓冲区大小size。
See also stencilBufferSize( )setStencil()和stencil( ) 。
If enable是真的让立体声缓冲,否则将禁用立体声缓冲。
立体声缓冲默认情况下禁用。
立体声缓冲提供额外的颜色缓冲区生成左眼和右眼的图像。
See also stereo( ) 。
设置首选的交换间隔。这可用于同步的GL绘图成一个系统的窗口,以在屏幕的垂直刷新。设置一个interval值为0将关闭垂直同步刷新关闭,大于0的任何值将变为垂直同步的。
在Windows和X11下,其中WGL_EXT_swap_control和GLX_SGI_video_sync扩展的使用,interval参数可被用来设定显示之前将发生缓冲交换的视频帧的最小数目。实际上,在设置interval10 ,意味着将有每一个缓冲区交换之间的10个垂直回扫。
在Windows下的WGL_EXT_swap_control扩展名必须存在,而且在X11下的GLX_SGI_video_sync扩展名必须存在。
这个函数中引入了Qt 4.2中。
See also swapInterval( ) 。
设置OpenGL版本到major和minor号码。如果所请求的OpenGL版本兼容的情况下不能创建,与1.x版本兼容的上下文被创建来代替。
此功能被引入Qt的4.7 。
See also majorVersion()和minorVersion( ) 。
返回True如果模板缓存被启用,否则返回False 。模板缓冲区是默认启用的。
See also setStencil()和setStencilBufferSize( ) 。
返回模板缓冲区大小。
See also stencil( )setStencil()和setStencilBufferSize( ) 。
返回True如果立体声缓冲使能,否则返回False 。立体声缓冲默认情况下禁用。
See also setStereo( ) 。
返回当前设置的交换间隔。如果设定的时间间隔交换不支持在系统总帐实现返回-1。
这个函数中引入了Qt 4.2中。
See also setSwapInterval( ) 。
返回True如果格式选项opt被置位,否则返回False 。
See also setOption( ) 。
PyQt 4.10.3 for X11 | Copyright © Riverbank Computing Ltd and Nokia 2012 | Qt 4.8.5 |