Home · All Classes · Modules · QSS HELP · QSS 案例 · VER007 HOME |
该QGLShaderProgram类允许的OpenGL着色器程序链接和使用。More...
继承QObject。
该QGLShaderProgram类允许的OpenGL着色器程序链接和使用。
此类支持写在OpenGL着色语言( GLSL )和OpenGL的/ ES着色语言( GLSL / ES)着色器程序。
QGLShader和QGLShaderProgram庇护程序员从编译和连接顶点和片段着色器的详细信息。
下面的示例创建使用附带的源顶点着色器程序code。一旦编译和链接,着色器程序是在当前激活QGLContext通过调用QGLShaderProgram.bind():
QGLShader shader(QGLShader.Vertex); shader.compileSourceCode(code); QGLShaderProgram program(context); program.addShader(shader); program.link(); program.bind();
着色器程序可能是因为不同的标准顶点属性和统一的变量支持水平难以跨越的OpenGL实现重用。特别是, GLSL / ES缺乏一切都存在于桌面OpenGL系统的标准变量:gl_Vertex,gl_Normal,gl_Color,等等。桌面OpenGL缺少可变预选赛highp,mediump和lowp。
该QGLShaderProgram类使得编写可移植着色器更容易的前缀与桌面OpenGL以下行的所有着色器程序的过程:
#define highp #define mediump #define lowp
这使得它可以运行在桌面系统最GLSL / ES着色器程序。程序员应该限制自己只是功能,是目前在GLSL / ES ,避免标准的变量名只能在桌面上。
program.addShaderFromSourceCode(QGLShader.Vertex, "attribute highp vec4 vertex;\n" "uniform highp mat4 matrix;\n" "void main(void)\n" "{\n" " gl_Position = matrix * vertex;\n" "}"); program.addShaderFromSourceCode(QGLShader.Fragment, "uniform mediump vec4 color;\n" "void main(void)\n" "{\n" " gl_FragColor = color;\n" "}"); program.link(); program.bind(); int vertexLocation = program.attributeLocation("vertex"); int matrixLocation = program.uniformLocation("matrix"); int colorLocation = program.uniformLocation("color");
有了上面的着色器程序活跃,我们可以得出一个绿色三角形如下:
static GLfloat const triangleVertices[] = { 60.0f, 10.0f, 0.0f, 110.0f, 110.0f, 0.0f, 10.0f, 110.0f, 0.0f }; QColor color(0, 255, 0, 255); QMatrix4x4 pmvMatrix; pmvMatrix.ortho(rect()); program.enableAttributeArray(vertexLocation); program.setAttributeArray(vertexLocation, triangleVertices, 3); program.setUniformValue(matrixLocation, pmvMatrix); program.setUniformValue(colorLocation, color); glDrawArrays(GL_TRIANGLES, 0, 3); program.disableAttributeArray(vertexLocation);
二进制着色器可以使用指定glShaderBinary()从返回值QGLShader.shaderId( ) 。该QGLShader实例包含二进制然后可以加入到着色器程序以addShader()和以通常的方式联系在一起link( ) 。
二进制程序可以使用指定glProgramBinaryOES()从返回值programId( ) 。然后,应用程序应调用link(),它会注意到,该方案已经指定和链接,让其他操作要在着色器程序进行。
该parent的说法,如果不是没有,原因self通过Qt的,而不是PyQt的拥有。
构造一个新的着色器程序并将其附加到parent。该计划将是无效的,直到addShader()被调用。
在着色器程序将与当前相关联QGLContext。
See also addShader( ) 。
该parent的说法,如果不是没有,原因self通过Qt的,而不是PyQt的拥有。
构造一个新的着色器程序并将其附加到parent。该计划将是无效的,直到addShader()被调用。
该着色器程序将与关联context。
See also addShader( ) 。
增加了一个编译shader该着色器程序。返回True如果着色器可以添加,否则返回False。
所有权shader对象保持与来电者。它不会被删除时,这QGLShaderProgram实例被删除。这允许调用者相同的着色器添加到多个着色器程序。
See also addShaderFromSourceCode( )addShaderFromSourceFile( )removeShader( )link()和removeAllShaders( ) 。
编译source作为指定的着色器type并将其添加到该着色器程序。返回True如果编译成功,否则返回False。编译错误和警告将透过提供log( ) 。
该功能的目的是成为一个捷径可以快速添加顶点和片段着色器的着色器程序,而无需创建一个实例QGLShader第一。
See also addShader( )addShaderFromSourceFile( )removeShader( )link( )log()和removeAllShaders( ) 。
这是一个重载函数。
编译source作为指定的着色器type并将其添加到该着色器程序。返回True如果编译成功,否则返回False。编译错误和警告将透过提供log( ) 。
该功能的目的是成为一个捷径可以快速添加顶点和片段着色器的着色器程序,而无需创建一个实例QGLShader第一。
See also addShader( )addShaderFromSourceFile( )removeShader( )link( )log()和removeAllShaders( ) 。
编译的内容fileName作为指定的着色器type并将其添加到该着色器程序。返回True如果编译成功,否则返回False。编译错误和警告将透过提供log( ) 。
该功能的目的是成为一个捷径可以快速添加顶点和片段着色器的着色器程序,而无需创建一个实例QGLShader第一。
See also addShader()和addShaderFromSourceCode( ) 。
返回属性的位置name在此着色器程序的参数列表。返回-1,如果name是不是这个着色器程序的有效属性。
See also uniformLocation()和bindAttributeLocation( ) 。
这是一个重载函数。
返回属性的位置name在此着色器程序的参数列表。返回-1,如果name是不是这个着色器程序的有效属性。
See also uniformLocation()和bindAttributeLocation( ) 。
此着色器程序绑定到活动QGLContext并使其成为当前着色器程序。所有以前绑定的着色器程序被释放。这等同于调用glUseProgram()上programId( ) 。返回True如果该程序已成功绑定,否则为False 。如果着色器程序还没有被链接,或者它需要被重新链接,该函数将调用link( ) 。
绑定属性name到指定的location。此功能可调用的程序已被证实与之前或之后。还没有当程序被链接被明确约束的任何属性将被自动分配位置。
当这个函数被调用的程序被连接后,该程序将需要重新链接至使更改生效。
See also attributeLocation( ) 。
这是一个重载函数。
绑定属性name到指定的location。此功能可调用的程序已被证实与之前或之后。还没有当程序被链接被明确约束的任何属性将被自动分配位置。
当这个函数被调用的程序被连接后,该程序将需要重新链接至使更改生效。
See also attributeLocation( ) 。
禁用顶点数组location在由以前调用启用此着色器程序enableAttributeArray( ) 。
See also enableAttributeArray( )setAttributeArray( )setAttributeValue()和setUniformValue( ) 。
这是一个重载函数。
禁用顶点数组称为name在由以前调用启用此着色器程序enableAttributeArray( ) 。
See also enableAttributeArray( )setAttributeArray( )setAttributeValue()和setUniformValue( ) 。
启用顶点数组location在这个shader程序,以便通过设置的值setAttributeArray( )上location将用于由所述着色器程序。
See also disableAttributeArray( )setAttributeArray( )setAttributeValue()和setUniformValue( ) 。
这是一个重载函数。
使顶点数组称为name在这个shader程序,以便通过设置的值setAttributeArray( )上name将用于由所述着色器程序。
See also disableAttributeArray( )setAttributeArray( )setAttributeValue()和setUniformValue( ) 。
返回几何着色器输入类型,如果活跃。
此参数将在下次程序连动效应。
此功能被引入Qt的4.7 。
See also setGeometryInputType( ) 。
返回几何着色器输出类型,如果活跃。
此参数将在下次程序连动效应。
此功能被引入Qt的4.7 。
See also setGeometryOutputType( ) 。
返回顶点的当前几何着色器程序会产生,如果活跃的最大数目。
此参数生效ntext的时间程序链接。
此功能被引入Qt的4.7 。
See also setGeometryOutputVertexCount( ) 。
否则返回False ,如果写在OpenGL着色语言( GLSL )着色器程序在该系统上都支持,则返回True 。
该context用于解析GLSL的扩展。如果context为null,则QGLContext.currentContext( )被使用。
返回True如果着色器程序已被链接,否则为False 。
See also link( ) 。
链接在一起,加入到这个计划与着色器addShader( ) 。返回True如果链接成功,否则返回False。如果链接失败,错误消息可以检索与log( ) 。
子类可以重载这个函数来初始化属性和统一的变量在特定着色器程序中使用。
如果着色器程序已经联系在一起,再调用这个函数将迫使它重新链接。
在过去的返回所发生的错误和警告link()或addShader( )和显式指定的源代码。
See also link( ) 。
返回与此着色器程序相关联的OpenGL的标识符。
See also QGLShader.shaderId( ) 。
释放从当前活动的着色器程序QGLContext。这等同于调用glUseProgram(0)。
See also bind( ) 。
删除所有被添加到这个程序,以前的着色器。该QGLShader如果他们在外部构造为着色器对象将不会被删除。QGLShader这是由内部构造的对象QGLShaderProgram将被删除。
See also addShader()和removeShader( ) 。
移除shader从这个着色器程序。对象不会被删除。
See also addShader( )link()和removeAllShaders( ) 。
设置顶点数组values在上面的属性location在此着色器程序。该tupleSize表示每个顶点组件(4 1,2 ,3,或)的数量,以及stride表示顶点之间的字节数。默认stride零值表示该顶点被致密地填充values。
该阵列会变得活跃时enableAttributeArray( )被调用的location。否则,使用指定的值setAttributeValue( )为location将被使用。
See also setAttributeValue( )setUniformValue( )enableAttributeArray()和disableAttributeArray( ) 。
设置二维顶点数组values在上面的属性location在此着色器程序。该stride表示顶点之间的字节数。默认stride零值表示该顶点被致密地填充values。
该阵列会变得活跃时enableAttributeArray( )被调用的location。否则,使用指定的值setAttributeValue( )为location将被使用。
See also setAttributeValue( )setUniformValue( )enableAttributeArray()和disableAttributeArray( ) 。
设置在顶点属性值中的一个阵列location在此着色器程序,起始于一个特定的offset在当前绑定的顶点缓冲。该stride表示顶点之间的字节数。默认stride零值表示该顶点被密集的值的数组中。
该type表示元素的顶点值阵列中的类型,通常GL_FLOAT,GL_UNSIGNED_BYTE等。tupleSize表示每个顶点部件的数量:1,2 ,3,或4 。
该阵列会变得活跃时enableAttributeArray( )被调用的location。否则,使用指定的值setAttributeValue( )为location将被使用。
此功能被引入Qt的4.7 。
See also setAttributeArray( ) 。
这是一个重载函数。
设置在顶点属性值的数组,称为name在此着色器程序,起始于一个特定的offset在当前绑定的顶点缓冲。该stride表示顶点之间的字节数。默认stride零值表示该顶点被密集的值的数组中。
该type表示元素的顶点值阵列中的类型,通常GL_FLOAT,GL_UNSIGNED_BYTE等。tupleSize表示每个顶点部件的数量:1,2 ,3,或4 。
该阵列会变得活跃时enableAttributeArray( )被调用的name。否则,使用指定的值setAttributeValue( )为name将被使用。
此功能被引入Qt的4.7 。
See also setAttributeArray( ) 。
在设置该属性location在目前情况下,以value。
See also setUniformValue( ) 。
在设置该属性location在目前情况下,以二维矢量(x,y) 。
See also setUniformValue( ) 。
在设置该属性location在当前上下文中的三维矢量(x,y,z) 。
See also setUniformValue( ) 。
在设置该属性location在目前情况下的4D向量(x,y,z,w) 。
See also setUniformValue( ) 。
在设置该属性location在目前情况下,以value。
See also setUniformValue( ) 。
在设置该属性location在目前情况下,以value。
See also setUniformValue( ) 。
在设置该属性location在目前情况下,以value。
See also setUniformValue( ) 。
在设置该属性location在目前情况下,以value。
See also setUniformValue( ) 。
在设置该属性location在当前上下文中的内容values,其中包含columns元素,每个元素包括rows元素。该rows值应为1,2, 3,或4 。这个功能通常是用来设置矩阵值和列向量。
See also setUniformValue( ) 。
这是一个重载函数。
所谓设置该属性name在目前情况下,以value。
See also setUniformValue( ) 。
这是一个重载函数。
所谓设置该属性name在目前情况下,以二维矢量(x,y) 。
See also setUniformValue( ) 。
这是一个重载函数。
所谓设置该属性name在当前上下文中的三维矢量(x,y,z) 。
See also setUniformValue( ) 。
这是一个重载函数。
所谓设置该属性name在目前情况下的4D向量(x,y,z,w) 。
See also setUniformValue( ) 。
这是一个重载函数。
所谓设置该属性name在目前情况下,以value。
See also setUniformValue( ) 。
这是一个重载函数。
所谓设置该属性name在目前情况下,以value。
See also setUniformValue( ) 。
这是一个重载函数。
所谓设置该属性name在目前情况下,以value。
See also setUniformValue( ) 。
设定从输入型inputType。
此参数将在下次程序连动效应。
See also geometryInputType( ) 。
从几何着色器设置输出类型,如果活跃,outputType。
此参数将在下次程序连动效应。
此功能被引入Qt的4.7 。
See also geometryOutputType( ) 。
设置顶点的当前几何着色器程序会产生,如果活跃,最大数量count。
此参数将在下次程序连动效应。
此功能被引入Qt的4.7 。
See also geometryOutputVertexCount( ) 。
设置在匀变速location在目前情况下,以value。
See also setAttributeValue( ) 。
设置在匀变速location在目前情况下,以value。
See also setAttributeValue( ) 。
设置在匀变速location在目前情况下,以value。设置采样值时,此功能应该被使用。
See also setAttributeValue( ) 。
设置在匀变速location在目前情况下,以二维矢量(x,y) 。
See also setAttributeValue( ) 。
设置在匀变速location在当前上下文中的三维矢量(x,y,z) 。
See also setAttributeValue( ) 。
设置在匀变速location在目前情况下的4D向量(x,y,z,w) 。
See also setAttributeValue( ) 。
设置在匀变速location在目前情况下,以value。
See also setAttributeValue( ) 。
设置在匀变速location在目前情况下,以value。
See also setAttributeValue( ) 。
设置在匀变速location在目前情况下,以value。
See also setAttributeValue( ) 。
设置在匀变速location在当前背景下的红色,绿色,蓝色和alpha分量color。
See also setAttributeValue( ) 。
设置在匀变速location在当前上下文中的x和y坐标point。
See also setAttributeValue( ) 。
设置在匀变速location在当前上下文中的x和y坐标point。
See also setAttributeValue( ) 。
设置在匀变速location在目前情况下,以给定的宽度和高度size。
See also setAttributeValue( ) 。
设置在匀变速location在目前情况下,以给定的宽度和高度size。
See also setAttributeValue( ) 。
设置在匀变速location在目前情况下,以一个2x2的矩阵value。
See also setAttributeValue( ) 。
设置在匀变速location在目前情况下,以一个2×3矩阵value。
See also setAttributeValue( ) 。
设置在匀变速location在目前情况下,以一个2x4的矩阵value。
See also setAttributeValue( ) 。
设置在匀变速location在目前情况下,以一个3x2的矩阵value。
See also setAttributeValue( ) 。
设置在匀变速location在目前情况下,以一个3x3矩阵value。
See also setAttributeValue( ) 。
设置在匀变速location在目前情况下,以一个3x4的矩阵value。
See also setAttributeValue( ) 。
设置在匀变速location在目前情况下,以一个4×2矩阵value。
See also setAttributeValue( ) 。
设置在匀变速location在目前情况下,以一个4x3的矩阵value。
See also setAttributeValue( ) 。
设置在匀变速location在目前情况下,以一个4x4矩阵value。
See also setAttributeValue( ) 。
设置在匀变速location在目前情况下,以一个3x3变换矩阵value被指定为一个QTransform值。
要设置QTransform值作为着色器,使用一个4x4矩阵setUniformValue(location, QMatrix4x4(value))。
这是一个重载函数。
设置叫做匀变速name在目前情况下,以value。
See also setAttributeValue( ) 。
这是一个重载函数。
设置叫做匀变速name在目前情况下,以value。
See also setAttributeValue( ) 。
这是一个重载函数。
设置叫做匀变速name在目前情况下,以value。设置采样值时,此功能应该被使用。
See also setAttributeValue( ) 。
这是一个重载函数。
设置叫做匀变速name在目前情况下,以二维矢量(x,y) 。
See also setAttributeValue( ) 。
这是一个重载函数。
设置叫做匀变速name在当前上下文中的三维矢量(x,y,z) 。
See also setAttributeValue( ) 。
这是一个重载函数。
设置叫做匀变速name在目前情况下的4D向量(x,y,z,w) 。
See also setAttributeValue( ) 。
这是一个重载函数。
设置叫做匀变速name在目前情况下,以value。
See also setAttributeValue( ) 。
这是一个重载函数。
设置叫做匀变速name在目前情况下,以value。
See also setAttributeValue( ) 。
这是一个重载函数。
设置叫做匀变速name在目前情况下,以value。
See also setAttributeValue( ) 。
这是一个重载函数。
设置叫做匀变速name在当前背景下的红色,绿色,蓝色和alpha分量color。
See also setAttributeValue( ) 。
这是一个重载函数。
设置与统一的变量相关联name在当前上下文中的x和y坐标point。
See also setAttributeValue( ) 。
这是一个重载函数。
设置与统一的变量相关联name在当前上下文中的x和y坐标point。
See also setAttributeValue( ) 。
这是一个重载函数。
设置与统一的变量相关联name在目前情况下,以给定的宽度和高度size。
See also setAttributeValue( ) 。
这是一个重载函数。
设置与统一的变量相关联name在目前情况下,以给定的宽度和高度size。
See also setAttributeValue( ) 。
这是一个重载函数。
设置叫做匀变速name在目前情况下,以一个2x2的矩阵value。
See also setAttributeValue( ) 。
这是一个重载函数。
设置叫做匀变速name在目前情况下,以一个2×3矩阵value。
See also setAttributeValue( ) 。
这是一个重载函数。
设置叫做匀变速name在目前情况下,以一个2x4的矩阵value。
See also setAttributeValue().
这是一个重载函数。
设置叫做匀变速name在目前情况下,以一个3x2的矩阵value。
See also setAttributeValue( ) 。
这是一个重载函数。
设置叫做匀变速name在目前情况下,以一个3x3矩阵value。
See also setAttributeValue( ) 。
这是一个重载函数。
设置叫做匀变速name在目前情况下,以一个3x4的矩阵value。
See also setAttributeValue( ) 。
这是一个重载函数。
设置叫做匀变速name在目前情况下,以一个4×2矩阵value。
See also setAttributeValue( ) 。
这是一个重载函数。
设置叫做匀变速name在目前情况下,以一个4x3的矩阵value。
See also setAttributeValue( ) 。
设置统一的变量数组location在目前情况下对count元素values。每个元素都有tupleSize组件。该tupleSize必须是1, 2,3,或4。
See also setAttributeValue( ) 。
设置统一的变量数组location在目前情况下对count元素values。
See also setAttributeValue( ) 。
返回已被添加到该着色器程序中所有着色器的使用列表addShader( ) 。
See also addShader()和removeShader( ) 。
返回均匀的变量的位置name在此着色器程序的参数列表。返回-1,如果name是不是这个着色器程序一个有效的统一变量。
See also attributeLocation( ) 。
这是一个重载函数。
返回均匀的变量的位置name在此着色器程序的参数列表。返回-1,如果name是不是这个着色器程序一个有效的统一变量。
See also attributeLocation( ) 。
PyQt 4.10.3 for X11 | Copyright © Riverbank Computing Ltd and Nokia 2012 | Qt 4.8.5 |