PySide6.QtOpenGL.QOpenGLShaderProgram

class QOpenGLShaderProgram

QOpenGLShaderProgram 类允许链接和使用 OpenGL 着色器程序。更多

PySide6.QtOpenGL.QOpenGLShaderProgram 的继承图

概要

方法

虚拟方法

静态函数

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

介绍

该类支持使用OpenGL着色语言(GLSL)和OpenGL/ES着色语言(GLSL/ES)编写的着色器程序。

QOpenGLShaderQOpenGLShaderProgram 使程序员无需了解编译和链接顶点和片段着色器的细节。

以下示例使用提供的源代码创建了一个顶点着色器程序。一旦编译并链接完成,通过调用bind(),着色器程序将在当前的QOpenGLContext中被激活:

shader = QOpenGLShader(QOpenGLShader.Vertex)
shader.compileSourceCode(code)
program = QOpenGLShaderProgram(context)
program.addShader(shader)
program.link()
program.bind()

编写可移植的着色器

由于对标准顶点属性和统一变量的支持程度不同,着色器程序在OpenGL实现之间可能难以重用。特别是,GLSL/ES缺少桌面OpenGL系统中存在的所有标准变量:gl_Vertexgl_Normalgl_Color等。桌面OpenGL缺少变量限定符highpmediumplowp

QOpenGLShaderProgram 类通过在桌面 OpenGL 上为所有着色器程序添加以下行,使编写可移植着色器的过程更加容易:

#define highp
#define mediump
#define lowp

这使得在桌面系统上运行大多数GLSL/ES着色器程序成为可能。程序员应限制自己仅使用GLSL/ES中存在的功能,并避免使用仅在桌面上有效的标准变量名称。

简单的着色器示例

program.addShaderFromSourceCode(QOpenGLShader.Vertex,
    "attribute highp vec4 vertex;\n"
    "uniform highp mat4 matrix;\n"
    "void main(void)\n"
    "{\n"
    " gl_Position = matrix * vertex;\n"
    "}")
program.addShaderFromSourceCode(QOpenGLShader.Fragment,
    "uniform mediump vec4 color;\n"
    "void main(void)\n"
    "{\n"
    " gl_FragColor = color;\n"
    "}")
program.link()
program.bind()
vertexLocation = program.attributeLocation("vertex")
matrixLocation = program.uniformLocation("matrix")
colorLocation = program.uniformLocation("color")

使用上述着色器程序激活后,我们可以绘制一个绿色三角形如下:

triangleVertices = {
    60.0f, 10.0f, 0.0f,
    110.0f, 110.0f, 0.0f,
    10.0f, 110.0f, 0.0f

color = QColor(0, 255, 0, 255)
pmvMatrix = QMatrix4x4()
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()shaderId()的返回值上指定二进制着色器。然后可以将包含二进制的QOpenGLShader实例通过addShader()添加到着色器程序中,并使用link()以通常的方式进行链接。

二进制程序可以使用glProgramBinaryOES()programId()的返回值上指定。然后应用程序应调用link(),这将注意到程序已经被指定和链接,允许在着色器程序上执行其他操作。着色器程序的ID可以使用create()函数显式创建。

缓存程序二进制文件

从 Qt 5.9 开始,内置了对磁盘上程序二进制文件缓存的支持。要启用此功能,请切换到使用 addCacheableShaderFromSourceCode()addCacheableShaderFromSourceFile()。在 OpenGL ES 3.x 上下文或支持 GL_ARB_get_program_binary 的情况下,这将在 QStandardPaths::GenericCacheLocation 或 QStandardPaths::CacheLocation 下透明地缓存程序二进制文件。当不支持时,调用可缓存函数变体等同于调用普通函数。

注意

一些驱动程序没有任何可用的二进制格式,即使它们宣传了扩展或提供了OpenGL ES 3.0。在这种情况下,程序二进制支持将被禁用。

另请参阅

QOpenGLShader

__init__([parent=None])
Parameters:

父对象QObject

构建一个新的着色器程序并将其附加到parent。在调用addShader()之前,该程序将无效。

着色器程序将与当前的 QOpenGLContext 关联。

另请参阅

addShader()

addCacheableShaderFromSourceCode(type, source)
Parameters:
Return type:

布尔

这是一个重载函数。

将指定的typesource的着色器注册到此程序中。与addShaderFromSourceCode()不同,此函数不执行编译。编译被推迟到link(),并且可能根本不会发生,因为link()可能会使用来自Qt的着色器磁盘缓存的程序二进制文件。这通常会显著提高性能。

如果着色器已注册或在非缓存情况下成功编译,则返回 true;如果出现错误,则返回 false。可以通过 log() 检索编译错误消息。

当磁盘缓存被禁用时,例如通过Qt::AA_DisableShaderDiskCache,或者OpenGL上下文不支持上下文二进制文件,调用此函数等同于addShaderFromSourceCode()

addCacheableShaderFromSourceCode(type, source)
Parameters:
Return type:

布尔

这是一个重载函数。

将指定的typesource的着色器注册到此程序中。与addShaderFromSourceCode()不同,此函数不执行编译。编译被推迟到link(),并且可能根本不会发生,因为link()可能会使用来自Qt着色器磁盘缓存的程序二进制文件。这通常会显著提高性能。

当磁盘缓存被禁用时,例如通过Qt::AA_DisableShaderDiskCache,或者OpenGL上下文不支持上下文二进制文件,调用此函数等同于addShaderFromSourceCode()

addCacheableShaderFromSourceCode(type, source)
Parameters:
Return type:

布尔

将指定的typesource的着色器注册到此程序中。与addShaderFromSourceCode()不同,此函数不执行编译。编译被推迟到link(),并且可能根本不会发生,因为link()可能会使用来自Qt的着色器磁盘缓存的程序二进制文件。这通常会显著提高性能。

如果着色器已注册或在非缓存情况下成功编译,则返回 true;如果出现错误,则返回 false。可以通过 log() 检索编译错误消息。

当磁盘缓存被禁用时,例如通过Qt::AA_DisableShaderDiskCache,或者OpenGL上下文不支持上下文二进制文件,调用此函数等同于addShaderFromSourceCode()

addCacheableShaderFromSourceFile(type, fileName)
Parameters:
Return type:

布尔

将指定的typefileName的着色器注册到此程序中。与addShaderFromSourceFile()不同,此函数不执行编译。编译被推迟到link(),并且可能根本不会发生,因为link()可能会使用来自Qt着色器磁盘缓存的程序二进制文件。这通常会显著提高性能。

如果文件已成功读取,则返回 true;如果文件无法打开或着色器的正常非缓存编译失败,则返回 false。编译错误消息可以通过 log() 获取。

当磁盘缓存被禁用时,例如通过Qt::AA_DisableShaderDiskCache,或者OpenGL上下文不支持上下文二进制文件,调用此函数等同于addShaderFromSourceFile()

addShader(shader)
Parameters:

着色器QOpenGLShader

Return type:

布尔

将一个编译好的shader添加到此着色器程序中。如果着色器可以添加,则返回true,否则返回false。

shader 对象的所有权仍归调用者所有。当此 QOpenGLShaderProgram 实例被删除时,它不会被删除。这允许调用者将相同的着色器添加到多个着色器程序中。

addShaderFromSourceCode(type, source)
Parameters:
Return type:

布尔

这是一个重载函数。

source编译为指定type的着色器,并将其添加到此着色器程序中。如果编译成功,则返回true,否则返回false。编译错误和警告将通过log()提供。

此函数旨在为快速向着色器程序添加顶点和片段着色器提供快捷方式,而无需首先创建QOpenGLShader的实例。

addShaderFromSourceCode(type, source)
Parameters:
Return type:

布尔

这是一个重载函数。

source编译为指定type的着色器,并将其添加到此着色器程序中。如果编译成功,则返回true,否则返回false。编译错误和警告将通过log()提供。

此函数旨在为快速向着色器程序添加顶点和片段着色器提供快捷方式,而无需首先创建QOpenGLShader的实例。

addShaderFromSourceCode(type, source)
Parameters:
Return type:

布尔

source编译为指定type的着色器,并将其添加到此着色器程序中。如果编译成功,则返回true,否则返回false。编译错误和警告将通过log()提供。

此函数旨在为快速向着色器程序添加顶点和片段着色器提供快捷方式,而无需首先创建QOpenGLShader的实例。

addShaderFromSourceFile(type, fileName)
Parameters:
Return type:

布尔

fileName的内容编译为指定type的着色器,并将其添加到此着色器程序中。如果编译成功,则返回true,否则返回false。编译错误和警告将通过log()提供。

此函数旨在为快速向着色器程序添加顶点和片段着色器提供快捷方式,而无需首先创建QOpenGLShader的实例。

attributeLocation(name)
Parameters:

名称QByteArray

Return type:

整数

这是一个重载函数。

返回此着色器程序参数列表中属性name的位置。如果name不是此着色器程序的有效属性,则返回-1。

attributeLocation(name)
Parameters:

name – str

Return type:

整数

这是一个重载函数。

返回属性name在此着色器程序的参数列表中的位置。如果name不是此着色器程序的有效属性,则返回-1。

attributeLocation(name)
Parameters:

name – str

Return type:

整数

返回此着色器程序参数列表中属性name的位置。如果name不是此着色器程序的有效属性,则返回-1。

bind()
Return type:

布尔

将此着色器程序绑定到活动的QOpenGLContext并使其成为当前的着色器程序。任何先前绑定的着色器程序都会被释放。这相当于在programId()上调用glUseProgram()。如果程序成功绑定,则返回true;否则返回false。如果着色器程序尚未链接,或者需要重新链接,此函数将调用link()

另请参阅

link() release()

bindAttributeLocation(name, location)
Parameters:

这是一个重载函数。

将属性 name 绑定到指定的 location。此函数可以在程序链接之前或之后调用。任何在程序链接时未显式绑定的属性将自动分配位置。

当程序链接后调用此函数时,程序需要重新链接以使更改生效。

另请参阅

attributeLocation()

bindAttributeLocation(name, location)
Parameters:
  • name – str

  • location – int

这是一个重载函数。

将属性 name 绑定到指定的 location。此函数可以在程序链接之前或之后调用。任何在程序链接时未显式绑定的属性将自动分配位置。

当程序链接后调用此函数时,程序需要重新链接以使更改生效。

另请参阅

attributeLocation()

bindAttributeLocation(name, location)
Parameters:
  • name – str

  • location – int

将属性 name 绑定到指定的 location。此函数可以在程序链接之前或之后调用。任何在程序链接时未显式绑定的属性将自动分配位置。

当程序链接后调用此函数时,程序需要重新链接以使更改生效。

另请参阅

attributeLocation()

create()
Return type:

布尔

请求立即创建着色器程序的ID。如果成功,返回true;否则返回false

此函数在将QOpenGLShaderProgram与其他直接操作着色器程序ID的OpenGL函数(如GL_OES_get_program_binary)结合使用时非常有用。

当正常使用着色器程序时,着色器程序的id将按需创建。

另请参阅

programId()

defaultInnerTessellationLevels()
Return type:

浮点数列表

返回默认的内部细分级别,这些级别在细分控制着色器未输出时由细分图元生成器使用。有关OpenGL和细分着色器的更多详细信息,请参阅OpenGL细分着色器。

返回一个描述内部细分级别的浮点数QList。该向量将始终包含两个元素,但并非所有元素对每种细分模式都有意义。

注意

这将返回全局的OpenGL状态值。它并不特定于这个QOpenGLShaderProgram实例。

注意

此功能仅在OpenGL >= 4.0时受支持,并且在OpenGL ES 3.2中不会返回有效结果。

defaultOuterTessellationLevels()
Return type:

浮点数列表

返回默认的外部细分级别,这些级别将在细分控制着色器未输出它们时由细分图元生成器使用。有关OpenGL和细分着色器的更多详细信息,请参阅OpenGL细分着色器。

返回一个描述外部细分级别的浮点数QList。该向量将始终包含四个元素,但并非所有元素对每种细分模式都有意义。

注意

这将返回全局的OpenGL状态值。它并不特定于这个QOpenGLShaderProgram实例。

注意

此功能仅在OpenGL >= 4.0中受支持,并且在OpenGL ES 3.2中不会返回有效结果。

disableAttributeArray(name)
Parameters:

name – str

这是一个重载函数。

禁用此着色器程序中名为 name 的顶点数组,该数组之前通过调用 enableAttributeArray() 启用。

disableAttributeArray(location)
Parameters:

位置 – int

禁用此着色器程序中由先前调用enableAttributeArray()启用的顶点数组,位于location

enableAttributeArray(name)
Parameters:

name – str

这是一个重载函数。

在此着色器程序中启用名为 name 的顶点数组,以便着色器程序将使用由 setAttributeArray()name 上设置的值。

enableAttributeArray(location)
Parameters:

位置 – int

在此着色器程序中启用location处的顶点数组,以便着色器程序将使用setAttributeArray()location上设置的值。

static hasOpenGLShaderPrograms([context=None])
Parameters:

上下文QOpenGLContext

Return type:

布尔

如果此系统支持用OpenGL着色语言(GLSL)编写的着色器程序,则返回true;否则返回false。

context 用于解析 GLSL 扩展。如果 contextNone,则使用 QOpenGLContext::currentContext()。

isLinked()
Return type:

布尔

如果此着色器程序已链接,则返回 true;否则返回 false。

另请参阅

link()

Return type:

布尔

将使用addShader()添加到此程序的着色器链接在一起。如果链接成功,则返回true,否则返回false。如果链接失败,可以使用log()检索错误消息。

子类可以重写此函数以初始化属性和统一变量,以便在特定的着色器程序中使用。

如果着色器程序已经链接,再次调用此函数将强制其重新链接。

当通过addCacheableShaderFromSourceCode()addCacheableShaderFromSourceFile()将着色器添加到该程序时,如果支持程序二进制文件,并且磁盘上有缓存的二进制文件,则跳过实际的编译和链接。相反,link()将通过glProgramBinary()使用二进制数据初始化程序。如果没有程序的缓存版本或它是用不同的驱动程序版本生成的,则将从源代码编译着色器并正常链接程序。这使得图形驱动程序的升级变得无缝,而无需担心可能不兼容的二进制格式。

另请参阅

addShader() log()

log()
Return type:

字符串

返回在上次使用明确指定源代码的link()addShader()期间发生的错误和警告。

另请参阅

link()

maxGeometryOutputVertices()
Return type:

整数

返回几何着色器可以输出的顶点数量的硬件限制。

patchVertexCount()
Return type:

整数

返回渲染时每个补丁使用的顶点数量。

注意

这将返回全局的OpenGL状态值。它并不特定于这个QOpenGLShaderProgram实例。

另请参阅

setPatchVertexCount()

programId()
Return type:

整数

返回与此着色器程序关联的OpenGL标识符。

另请参阅

shaderId()

release()

从当前的QOpenGLContext中释放活动的着色器程序。这相当于调用glUseProgram(0)

另请参阅

bind()

removeAllShaders()

移除之前添加到该程序中的所有着色器。如果QOpenGLShader对象是在外部构建的,则这些着色器对象不会被删除。由QOpenGLShaderProgram内部构建的QOpenGLShader对象将被删除。

removeShader(shader)
Parameters:

着色器QOpenGLShader

从此着色器程序中移除shader。该对象不会被删除。

着色器程序在当前QOpenGLContext中必须有效。

setAttributeArray(name, values, tupleSize[, stride=0])
Parameters:
  • name – str

  • values – 浮点数

  • tupleSize – 整数

  • stride – 整数

setAttributeArray(location, values, tupleSize[, stride=0])
Parameters:
  • location – int

  • values – 浮点数

  • tupleSize – int

  • stride – 整数

setAttributeArray(name, type, values, tupleSize[, stride=0])
Parameters:
  • name – str

  • type – int

  • valuesvoid

  • tupleSize – int

  • stride – 整数

setAttributeArray(location, type, values, tupleSize[, stride=0])
Parameters:
  • location – int

  • type – int

  • valuesvoid

  • tupleSize – int

  • stride – 整数

setAttributeBuffer(name, type, offset, tupleSize[, stride=0])
Parameters:
  • name – str

  • type – int

  • offset – int

  • tupleSize – int

  • stride – 整数

setAttributeBuffer(location, type, offset, tupleSize[, stride=0])
Parameters:
  • location – int

  • type – int

  • offset – int

  • tupleSize – int

  • stride – 整数

setAttributeValue(name, value)
Parameters:
  • name – str

  • valueQColor

这是一个重载函数。

在当前上下文中将名为name的属性设置为value

另请参阅

setUniformValue()

setAttributeValue(name, value)
Parameters:

这是一个重载函数。

在当前上下文中将名为name的属性设置为value

另请参阅

setUniformValue()

setAttributeValue(name, value)
Parameters:

这是一个重载函数。

在当前上下文中将名为name的属性设置为value

另请参阅

setUniformValue()

setAttributeValue(name, value)
Parameters:

这是一个重载函数。

在当前上下文中将名为name的属性设置为value

另请参阅

setUniformValue()

setAttributeValue(name, value)
Parameters:
  • name – str

  • value – 浮点数

setAttributeValue(location, value)
Parameters:
  • location – int

  • valueQColor

将当前上下文中location处的属性设置为value

另请参阅

setUniformValue()

setAttributeValue(location, value)
Parameters:

将当前上下文中location处的属性设置为value

另请参阅

setUniformValue()

setAttributeValue(location, value)
Parameters:

将当前上下文中location处的属性设置为value

另请参阅

setUniformValue()

setAttributeValue(location, value)
Parameters:

将当前上下文中location处的属性设置为value

另请参阅

setUniformValue()

setAttributeValue(location, value)
Parameters:
  • location – int

  • value – 浮点数

setAttributeValue(name, x, y)
Parameters:
  • name – str

  • x – 浮点数

  • y – 浮点数

setAttributeValue(location, x, y)
Parameters:
  • location – int

  • x – 浮点数

  • y – 浮点数

setAttributeValue(name, values, columns, rows)
Parameters:
  • name – str

  • values – 浮点数

  • columns – 整数

  • rows – int

setAttributeValue(name, x, y, z)
Parameters:
  • name – str

  • x – 浮点数

  • y – 浮点数

  • z – 浮点数

setAttributeValue(location, values, columns, rows)
Parameters:
  • location – int

  • values – 浮点数

  • columns – 整数

  • rows – int

setAttributeValue(location, x, y, z)
Parameters:
  • location – int

  • x – 浮点数

  • y – 浮点数

  • z – 浮点数

setAttributeValue(name, x, y, z, w)
Parameters:
  • name – str

  • x – 浮点数

  • y – 浮点数

  • z – 浮点数

  • w – 浮点数

setAttributeValue(location, x, y, z, w)
Parameters:
  • location – int

  • x – 浮点数

  • y – 浮点数

  • z – 浮点数

  • w – 浮点数

setDefaultInnerTessellationLevels(levels)
Parameters:

levels – .浮点数列表

设置默认的外部细分级别,以便在细分控制着色器未将其输出到levels时,由细分图元生成器使用。有关OpenGL和细分着色器的更多详细信息,请参阅OpenGL细分着色器。

levels 参数应该是一个由2个浮点数组成的QList。并非所有值对所有细分模式都有意义。如果指定的向量少于2个元素,剩余元素将被赋予默认值1。

注意

这会修改全局的OpenGL状态,并不特定于这个QOpenGLShaderProgram实例。你应该在需要时在你的渲染函数中调用它,因为QOpenGLShaderProgram不会为你应用这个。这纯粹是一个方便的函数。

注意

此功能仅在 OpenGL >= 4.0 中可用,且不支持 OpenGL ES 3.2。

setDefaultOuterTessellationLevels(levels)
Parameters:

levels – .浮点数列表

设置默认的外部细分级别,以便在细分控制着色器未将其输出到levels时,由细分图元生成器使用。有关OpenGL和细分着色器的更多详细信息,请参阅OpenGL细分着色器。

levels 参数应该是一个由4个浮点数组成的QList。并非所有值对所有细分模式都有意义。如果指定的向量少于4个元素,剩余元素将被赋予默认值1。

注意

这会修改全局的OpenGL状态,并不特定于这个QOpenGLShaderProgram实例。你应该在需要时在你的渲染函数中调用它,因为QOpenGLShaderProgram不会为你应用这个。这纯粹是一个方便的函数。

注意

此功能仅在 OpenGL >= 4.0 中可用,且不支持 OpenGL ES 3.2。

setPatchVertexCount(count)
Parameters:

count – int

使用此函数向OpenGL指定补丁中的顶点数量为count。补丁是一种自定义的OpenGL图元,其解释完全由细分着色器阶段定义。因此,只有在使用包含细分阶段着色器的QOpenGLShaderProgram时,调用此函数才有意义。在使用OpenGL细分时,唯一可以使用glDraw*()函数渲染的图元是GL_PATCHES

这相当于调用 glPatchParameteri(GL_PATCH_VERTICES, count)。

注意

这会修改全局的OpenGL状态,并不特定于这个QOpenGLShaderProgram实例。你应该在需要时在你的渲染函数中调用它,因为QOpenGLShaderProgram不会为你应用这个。这纯粹是一个方便的函数。

另请参阅

patchVertexCount()

setUniformValue(name, color)
Parameters:
  • name – str

  • 颜色QColor

这是一个重载函数。

将当前上下文中名为name的统一变量设置为color的红、绿、蓝和透明度分量。

另请参阅

setAttributeValue()

setUniformValue(name, value)
Parameters:

这是一个重载函数。

将当前上下文中名为 name 的uniform变量设置为一个2x2矩阵 value

另请参阅

setAttributeValue()

setUniformValue(name, value)
Parameters:

这是一个重载函数。

将当前上下文中名为 name 的uniform变量设置为一个2x3矩阵 value

注意

此函数不支持非方阵,例如现代OpenGL版本中存在的GLSL类型mat2x3。相反,它将uniform视为vec3的数组。

另请参阅

setAttributeValue()

setUniformValue(name, value)
Parameters:

这是一个重载函数。

将当前上下文中名为 name 的uniform变量设置为一个2x4矩阵 value

注意

此函数不支持非方阵,例如现代OpenGL版本中的GLSL类型mat2x4。相反,它将uniform视为vec4的数组。

另请参阅

setAttributeValue()

setUniformValue(name, value)
Parameters:

这是一个重载函数。

将当前上下文中名为 name 的uniform变量设置为一个3x2矩阵 value

注意

此函数不支持非方阵,例如现代OpenGL版本中的GLSL类型mat3x2。相反,它将uniform视为vec2的数组。

另请参阅

setAttributeValue()

setUniformValue(name, value)
Parameters:

这是一个重载函数。

将当前上下文中名为 name 的uniform变量设置为一个3x3矩阵 value

另请参阅

setAttributeValue()

setUniformValue(name, value)
Parameters:

这是一个重载函数。

将当前上下文中名为 name 的uniform变量设置为一个3x4矩阵 value

注意

此函数不支持非方阵,例如现代OpenGL版本中存在的GLSL类型mat3x4。相反,它将uniform视为vec4的数组。

另请参阅

setAttributeValue()

setUniformValue(name, value)
Parameters:

这是一个重载函数。

将当前上下文中名为name的uniform变量设置为4x2矩阵value

注意

此函数不支持非方阵,例如现代OpenGL版本中存在的GLSL类型mat4x2。相反,它将uniform视为vec2的数组。

另请参阅

setAttributeValue()

setUniformValue(name, value)
Parameters:

这是一个重载函数。

将当前上下文中名为 name 的uniform变量设置为一个4x3矩阵 value

注意

此函数不支持非方阵,例如现代OpenGL版本中存在的GLSL类型mat4x3。相反,它将uniform视为vec3的数组。

另请参阅

setAttributeValue()

setUniformValue(name, value)
Parameters:

这是一个重载函数。

将当前上下文中名为 name 的uniform变量设置为一个4x4矩阵 value

另请参阅

setAttributeValue()

setUniformValue(name, point)
Parameters:

这是一个重载函数。

将当前上下文中与name关联的统一变量设置为point的x和y坐标。

另请参阅

setAttributeValue()

setUniformValue(name, point)
Parameters:

这是一个重载函数。

将当前上下文中与name关联的统一变量设置为point的x和y坐标。

另请参阅

setAttributeValue()

setUniformValue(name, size)
Parameters:
  • name – str

  • sizeQSize

这是一个重载函数。

将当前上下文中与name关联的uniform变量设置为给定size的宽度和高度。

另请参阅

setAttributeValue()

setUniformValue(name, size)
Parameters:
  • name – str

  • sizeQSizeF

这是一个重载函数。

将当前上下文中与name关联的uniform变量设置为给定size的宽度和高度。

另请参阅

setAttributeValue()

setUniformValue(name, value)
Parameters:

这是一个重载函数。

将当前上下文中名为 name 的uniform变量设置为一个3x3变换矩阵 value,该矩阵指定为QTransform值。

要在着色器中将QTransform值设置为4x4矩阵,请使用setUniformValue(name, QMatrix4x4(value))

setUniformValue(name, value)
Parameters:

这是一个重载函数。

将当前上下文中名为 name 的uniform变量设置为 value

另请参阅

setAttributeValue()

setUniformValue(name, value)
Parameters:

这是一个重载函数。

将当前上下文中名为 name 的uniform变量设置为 value

另请参阅

setAttributeValue()

setUniformValue(name, value)
Parameters:

这是一个重载函数。

将当前上下文中名为 name 的uniform变量设置为 value

另请参阅

setAttributeValue()

setUniformValue(name, value)
Parameters:
  • name – str

  • valuefloat[][]

setUniformValue(name, value)
Parameters:
  • name – str

  • valuefloat[][]

setUniformValue(name, value)
Parameters:
  • name – str

  • valuefloat[][]

setUniformValue(location, color)
Parameters:
  • location – int

  • 颜色QColor

将当前上下文中location处的统一变量设置为color的红色、绿色、蓝色和透明度分量。

另请参阅

setAttributeValue()

setUniformValue(location, value)
Parameters:

将当前上下文中location处的统一变量设置为2x2矩阵value

另请参阅

setAttributeValue()

setUniformValue(location, value)
Parameters:

将当前上下文中location处的统一变量设置为2x3矩阵value

注意

此函数不支持非方阵,例如现代OpenGL版本中存在的GLSL类型mat2x3。相反,它将uniform视为vec3的数组。

另请参阅

setAttributeValue()

setUniformValue(location, value)
Parameters:

将当前上下文中location处的统一变量设置为2x4矩阵value

注意

此函数不支持非方阵,例如现代OpenGL版本中的GLSL类型mat2x4。相反,它将uniform视为vec4的数组。

另请参阅

setAttributeValue()

setUniformValue(location, value)
Parameters:

将当前上下文中location处的统一变量设置为3x2矩阵value

注意

此函数不支持非方阵,例如现代OpenGL版本中的GLSL类型mat3x2。相反,它将uniform视为vec2的数组。

另请参阅

setAttributeValue()

setUniformValue(location, value)
Parameters:

将当前上下文中location处的统一变量设置为3x3矩阵value

另请参阅

setAttributeValue()

setUniformValue(location, value)
Parameters:

将当前上下文中location处的统一变量设置为3x4矩阵value

注意

此函数不支持非方阵,例如现代OpenGL版本中存在的GLSL类型mat3x4。相反,它将uniform视为vec4的数组。

另请参阅

setAttributeValue()

setUniformValue(location, value)
Parameters:

将当前上下文中location处的统一变量设置为4x2矩阵value

注意

此函数不支持非方阵,例如现代OpenGL版本中存在的GLSL类型mat4x2。相反,它将uniform视为vec2的数组。

另请参阅

setAttributeValue()

setUniformValue(location, value)
Parameters:

将当前上下文中location处的统一变量设置为4x3矩阵value

注意

此函数不支持非方阵,例如现代OpenGL版本中存在的GLSL类型mat4x3。相反,它将uniform视为vec3的数组。

另请参阅

setAttributeValue()

setUniformValue(location, value)
Parameters:

将当前上下文中location处的统一变量设置为4x4矩阵value

另请参阅

setAttributeValue()

setUniformValue(location, point)
Parameters:
  • location – int

  • QPoint

将当前上下文中location处的统一变量设置为point的x和y坐标。

另请参阅

setAttributeValue()

setUniformValue(location, point)
Parameters:

将当前上下文中location处的统一变量设置为point的x和y坐标。

另请参阅

setAttributeValue()

setUniformValue(location, size)
Parameters:
  • location – int

  • sizeQSize

将当前上下文中location处的统一变量设置为给定size的宽度和高度。

另请参阅

setAttributeValue()

setUniformValue(location, size)
Parameters:
  • location – int

  • sizeQSizeF

将当前上下文中location处的统一变量设置为给定size的宽度和高度。

另请参阅

setAttributeValue()

setUniformValue(location, value)
Parameters:

将当前上下文中location处的统一变量设置为一个3x3变换矩阵value,该矩阵指定为QTransform值。

要在着色器中将QTransform值设置为4x4矩阵,请使用setUniformValue(location, QMatrix4x4(value))

setUniformValue(location, value)
Parameters:

将当前上下文中location处的统一变量设置为value

另请参阅

setAttributeValue()

setUniformValue(location, value)
Parameters:

将当前上下文中location处的统一变量设置为value

另请参阅

setAttributeValue()

setUniformValue(location, value)
Parameters:

将当前上下文中location处的统一变量设置为value

另请参阅

setAttributeValue()

setUniformValue(location, value)
Parameters:
  • location – int

  • valuefloat[][]

setUniformValue(location, value)
Parameters:
  • location – int

  • valuefloat[][]

setUniformValue(location, value)
Parameters:
  • location – int

  • valuefloat[][]

setUniformValue(location, value)
Parameters:
  • location – int

  • value – 浮点数

setUniformValue(location, value)
Parameters:
  • location – int

  • value – int

setUniformValue(location, value)
Parameters:
  • location – int

  • value – int

setUniformValue(name, x, y)
Parameters:
  • name – str

  • x – 浮点数

  • y – 浮点数

setUniformValue(location, x, y)
Parameters:
  • location – int

  • x – 浮点数

  • y – 浮点数

setUniformValue(name, x, y, z)
Parameters:
  • name – str

  • x – 浮点数

  • y – 浮点数

  • z – 浮点数

setUniformValue(location, x, y, z)
Parameters:
  • location – int

  • x – 浮点数

  • y – 浮点数

  • z – 浮点数

setUniformValue(name, x, y, z, w)
Parameters:
  • name – str

  • x – 浮点数

  • y – 浮点数

  • z – 浮点数

  • w – 浮点数

setUniformValue(location, x, y, z, w)
Parameters:
  • location – int

  • x – 浮点数

  • y – 浮点数

  • z – 浮点数

  • w – 浮点数

setUniformValue1f(arg__1, arg__2)
Parameters:
  • arg__1 – str

  • arg__2 – 浮点数

setUniformValue1f(arg__1, arg__2)
Parameters:
  • arg__1 – 整数

  • arg__2 – 浮点数

setUniformValue1i(arg__1, arg__2)
Parameters:
  • arg__1 – str

  • arg__2 – 整数

setUniformValue1i(arg__1, arg__2)
Parameters:
  • arg__1 – 整数

  • arg__2 – 整数

setUniformValueArray(name, values, count)
Parameters:
  • name – str

  • values – int

  • count – int

setUniformValueArray(name, values, count)
Parameters:
  • name – str

  • valuesunsigned int

  • count – int

setUniformValueArray(location, values, count)
Parameters:
  • location – int

  • values – 整数

  • count – int

setUniformValueArray(location, values, count)
Parameters:
  • location – int

  • valuesunsigned int

  • count – int

setUniformValueArray(name, values, count, tupleSize)
Parameters:
  • name – str

  • values – 浮点数

  • count – int

  • tupleSize – int

setUniformValueArray(location, values, count, tupleSize)
Parameters:
  • location – int

  • values – 浮点数

  • count – int

  • tupleSize – int

shaders()
Return type:

QOpenGLShader的列表

返回使用addShader()添加到此着色器程序中的所有着色器的列表。

uniformLocation(name)
Parameters:

名称QByteArray

Return type:

整数

这是一个重载函数。

返回此着色器程序参数列表中统一变量name的位置。如果name不是此着色器程序的有效统一变量,则返回-1。

另请参阅

attributeLocation()

uniformLocation(name)
Parameters:

name – str

Return type:

整数

这是一个重载函数。

返回此着色器程序参数列表中统一变量name的位置。如果name不是此着色器程序的有效统一变量,则返回-1。

另请参阅

attributeLocation()

uniformLocation(name)
Parameters:

name – str

Return type:

整数

返回此着色器程序参数列表中统一变量name的位置。如果name不是此着色器程序的有效统一变量,则返回-1。

另请参阅

attributeLocation()