class QOpenGLShaderProgram#

QOpenGLShaderProgram 允许链接并使用 OpenGL 着色程序。 更多信息

Inheritance diagram of PySide6.QtOpenGL.QOpenGLShaderProgram

摘要#

方法#

虚函数#

静态函数#

注释

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

详细描述#

警告

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

介绍#

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

QOpenGLShaderQOpenGLShaderProgram 保护程序员免于编译和链接顶点和片段着色器的细节。

以下示例使用提供的源代码 code 创建一个顶点着色程序。一旦编译和链接,通过调用 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() 的返回值上指定二进制着色器。然后,可以使用 addShader() 将包含二进制的 QOpenGLShader 实例添加到着色器程序中,并使用 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])#
参数:

parentQObject

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

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

另请参阅

addShader()

addCacheableShaderFromSourceCode(type, source)#
参数:
返回类型:

bool

这是一个重载函数。

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

如果着色器已注册或在没有缓存的案例中成功编译,则返回true;如果发生错误,则返回false。编译错误信息可以通过 log() 获取。

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

addCacheableShaderFromSourceCode(type, source)
参数:
返回类型:

bool

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

如果着色器已注册或在没有缓存的案例中成功编译,则返回true;如果发生错误,则返回false。编译错误信息可以通过 log() 获取。

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

addCacheableShaderFromSourceCode(type, source)
参数:
返回类型:

bool

这是一个重载函数。

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

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

addCacheableShaderFromSourceFile(type, fileName)#
参数:
返回类型:

bool

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

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

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

addShader(shader)#
参数:

shaderQOpenGLShader

返回类型:

bool

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

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

addShaderFromSourceCode(type, source)#
参数:
返回类型:

bool

这是一个重载函数。

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

此函数旨在通过不首先创建 QOpenGLShader 实例,快速将顶点着色器和片段着色器添加到着色器程序中。

addShaderFromSourceCode(type, source)
参数:
返回类型:

bool

这是一个重载函数。

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

此函数旨在通过不首先创建 QOpenGLShader 实例,快速将顶点着色器和片段着色器添加到着色器程序中。

addShaderFromSourceCode(type, source)
参数:
返回类型:

bool

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

此函数旨在通过不首先创建 QOpenGLShader 实例,快速将顶点着色器和片段着色器添加到着色器程序中。

addShaderFromSourceFile(type, fileName)#
参数:
返回类型:

bool

将指定类型 type 的着色器文件 fileName 内容编译成着色器,并将其添加到这个着色器程序中。如果编译成功,返回 true,否则返回 false。编译错误和警告将通过 log() 获取。

此函数旨在通过不首先创建 QOpenGLShader 实例,快速将顶点着色器和片段着色器添加到着色器程序中。

attributeLocation(name)#
参数:

name - QByteArray

返回类型:

int

这是一个重载函数。

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

attributeLocation(name)
参数:

name - str

返回类型:

int

这是一个重载函数。

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

attributeLocation(name)
参数:

name - str

返回类型:

int

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

bind()#
返回类型:

bool

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

另请参阅

link() release()

bindAttributeLocation(name, location)#
参数:

这是一个重载函数。

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

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

另请参阅

attributeLocation()

bindAttributeLocation(name, location)
参数:
  • name - str

  • location – int

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

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

另请参阅

attributeLocation()

bindAttributeLocation(name, location)
参数:
  • name - str

  • location – int

这是一个重载函数。

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

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

另请参阅

attributeLocation()

create()#
返回类型:

bool

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

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

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

另请参阅

programId()

defaultInnerTessellationLevels()#
返回类型:

浮点数列表

当曲面细分着色器没有输出时,返回用于曲面生成器的默认内部曲面细分级别。有关OpenGL和曲面细分着色器的更多详细信息,请参阅OpenGL曲面细分着色器。

返回描述内部曲面细分级别的浮点数QList。此向量始终有两个元素,但并不是所有元素在每种曲面细分方式下都有意义。

注释

这返回全局OpenGL状态值。它不是特定于此 QOpenGLShaderProgram 实例。

注释

该函数仅支持OpenGL >= 4.0,并且在使用OpenGL ES 3.2时不会返回有效结果。

defaultOuterTessellationLevels()#
返回类型:

浮点数列表

当曲面细分着色器没有输出时,返回用于曲面生成器的默认外部曲面细分级别。有关OpenGL和曲面细分着色器的更多详细信息,请参阅OpenGL曲面细分着色器。

返回描述外部曲面细分级别的浮点数QList。此向量始终有四个元素,但并不是所有元素在每种曲面细分方式下都有意义。

注释

这返回全局OpenGL状态值。它不是特定于此 QOpenGLShaderProgram 实例。

注释

该函数仅支持OpenGL >= 4.0,并且在使用OpenGL ES 3.2时不会返回有效结果。

disableAttributeArray(name)#
参数:

name - str

这是一个重载函数。

禁用由前面的 enableAttributeArray() 调用启用的名为 name 的顶点数组.

disableAttributeArray(location)
参数:

location – int

禁用位于 location 的这个着色程序中的顶点数组,该数组之前通过 enableAttributeArray() 调用启用。

enableAttributeArray(name)#
参数:

name - str

这是一个重载函数。

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

enableAttributeArray(location)
参数:

location – int

启用此着色程序中“位置”为 location 的顶点数组,以便在 location 上通过 setAttributeArray() 设置的值将被着色程序使用。

静态hasOpenGLShaderPrograms([context=None])#
参数:

上下文QOpenGLContext

返回类型:

bool

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

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

isLinked()#
返回类型:

bool

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

另请参阅

link()

返回类型:

bool

将使用 addShader() 添加到程序中的着色器链接起来。如果链接成功,则返回true;否则返回false。如果链接失败,可以使用 log() 获取错误信息。

子类可以覆盖此函数以初始化特定着色程序中使用的属性和统一变量。

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

当通过 addCacheableShaderFromSourceCode()addCacheableShaderFromSourceFile() 将着色器添加到程序中时,程序二进制支持,磁盘上存在缓存的二进制文件,将跳过实际的编译和链接。相反,将使用 glProgramBinary() 通过二进制blob初始化程序。如果没有缓存的程序版本或它使用不同的驱动程序版本生成,将从源编译着色器,并将正常链接程序。这允许无缝升级图形驱动程序,而无需担心潜在的兼容性问题。

另请参阅

addShader() log()

log()#
返回类型:

字符串

在执行最后的link()或使用显式指定源码的addShader()调用时,返回发生的错误和警告。

另请参阅

link()

maxGeometryOutputVertices()#
返回类型:

int

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

patchVertexCount()#
返回类型:

int

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

注释

这返回全局OpenGL状态值。它不是特定于此 QOpenGLShaderProgram 实例。

另请参阅

setPatchVertexCount()

programId()#
返回类型:

int

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

另请参阅

shaderId()

release()#

释放当前QOpenGLContext中激活的着色器程序。这等同于调用glUseProgram(0)

另请参阅

bind()

removeAllShaders()#

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

removeShader(shader)#
参数:

shaderQOpenGLShader

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

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

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

  • type - 整数

  • values - void

  • tupleSize - 整数

  • stride - 整数

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

  • values - 浮点数

  • tupleSize - 整数

  • stride - 整数

setAttributeArray(name, type, values, tupleSize[, stride=0])
参数:
  • name - str

  • type - 整数

  • values - void

  • tupleSize - 整数

  • stride - 整数

setAttributeArray(name, values, tupleSize[, stride=0])
参数:
  • name - str

  • values - 浮点数

  • tupleSize - 整数

  • stride - 整数

setAttributeBuffer(name, type, offset, tupleSize[, stride=0])#
参数:
  • name - str

  • type - 整数

  • offset - 整数

  • tupleSize - 整数

  • stride - 整数

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

  • type - 整数

  • offset - 整数

  • tupleSize - 整数

  • stride - 整数

setAttributeValue(name, value)#
参数:

这是一个重载函数。

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

另请参阅

setUniformValue()

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

  • x - 浮点数

  • y - 浮点数

  • z – 单精度浮点数

  • w – 单精度浮点数

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

  • x - 浮点数

  • y - 浮点数

  • z – 单精度浮点数

setAttributeValue(location, x, y)
参数:
  • location – int

  • x - 浮点数

  • y - 浮点数

setAttributeValue(location, value)
参数:
  • location – int

  • value – 单精度浮点数

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

  • values - 浮点数

  • columns – 整数

  • rows – 整数

setAttributeValue(location, value)
参数:

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

另请参阅

setUniformValue()

setAttributeValue(location, value)
参数:

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

另请参阅

setUniformValue()

setAttributeValue(location, value)
参数:

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

另请参阅

setUniformValue()

setAttributeValue(name, x, y, z, w)
参数:
  • name - str

  • x - 浮点数

  • y - 浮点数

  • z – 单精度浮点数

  • w – 单精度浮点数

setAttributeValue(name, x, y, z)
参数:
  • name - str

  • x - 浮点数

  • y - 浮点数

  • z – 单精度浮点数

setAttributeValue(name, x, y)
参数:
  • name - str

  • x - 浮点数

  • y - 浮点数

setAttributeValue(name, value)
参数:
  • name - str

  • value – 单精度浮点数

setAttributeValue(name, values, columns, rows)
参数:
  • name - str

  • values - 浮点数

  • columns – 整数

  • rows – 整数

setAttributeValue(location, value)
参数:
  • location – int

  • valueQColor

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

另请参阅

setUniformValue()

setAttributeValue(name, value)
参数:

这是一个重载函数。

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

另请参阅

setUniformValue()

setAttributeValue(name, value)
参数:

这是一个重载函数。

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

另请参阅

setUniformValue()

setAttributeValue(name, value)
参数:

这是一个重载函数。

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

另请参阅

setUniformValue()

setDefaultInnerTessellationLevels(levels)#
参数:

levels – 浮点数列表

设置默认的外部细分级别,当细分控制着色器未输出到 levels 时将由细分原语生成器使用。有关OpenGL和细分着色器的更多详情,请参阅OpenGL细分着色器。

参数 levels 应该是一个包含2个浮点数的 QList。并非所有值都适用于所有细分模式。如果您指定了一个元素少于2个的向量,剩余元素将被赋予默认值1。

注释

这修改了全局OpenGL状态,并非特指此 QOpenGLShaderProgram 实例。您应在需要时调用此方法,因为 QOpenGLShaderProgram 不会为您应用此设置。这是一个纯便利函数。

注释

此函数仅在OpenGL >= 4.0时可用,并且不受OpenGL ES 3.2支持。

setDefaultOuterTessellationLevels(levels)#
参数:

levels – 浮点数列表

设置默认的外部细分级别,当细分控制着色器未输出到 levels 时将由细分原语生成器使用。有关OpenGL和细分着色器的更多详情,请参阅OpenGL细分着色器。

参数 levels 应该是一个包含4个浮点数的 QList。并非所有值都适用于所有细分模式。如果您指定了一个元素少于4个的向量,剩余元素将被赋予默认值1。

注释

这修改了全局OpenGL状态,并非特指此 QOpenGLShaderProgram 实例。您应在需要时调用此方法,因为 QOpenGLShaderProgram 不会为您应用此设置。这是一个纯便利函数。

注释

此函数仅在OpenGL >= 4.0时可用,并且不受OpenGL ES 3.2支持。

setPatchVertexCount(count)#
参数:

count – int

使用此函数指定OpenGL中将patch的顶点数设置为何值。patch是一个由细分着色器阶段完全定义的解释的OpenGL原语。因此,仅当使用包含细分阶段着色器的 QOpenGLShaderProgram 时调用此函数才有意义。在使用OpenGL细分时,只有可以用 glDraw*() 函数渲染的原语是 GL_PATCHES

这等同于调用glPatchParameteri(GL_PATCH_VERTICES, count)。

注释

这修改了全局OpenGL状态,并非特指此 QOpenGLShaderProgram 实例。您应在需要时调用此方法,因为 QOpenGLShaderProgram 不会为您应用此设置。这是一个纯便利函数。

另请参阅

patchVertexCount()

setUniformValue(location, value)#
参数:

将当前上下文中的均匀变量在 location 位置设置为一个 2x3 矩阵 value

注释

此函数不支持非方阵,即现代 OpenGL 版本中存在的类似 mat2x3 的 GLSL 类型。相反,它将均匀变量处理为一个 vec3 数组。

另请参阅

setAttributeValue()

setUniformValue(location, size)
参数:
  • location – int

  • sizeQSizeF

将当前上下文中的均匀变量在 location 位置设置给定的 size 的宽度和高度。

另请参阅

setAttributeValue()

setUniformValue(location, value)
参数:

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

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

setUniformValue(location, size)
参数:
  • location – int

  • sizeQSize

将当前上下文中的均匀变量在 location 位置设置给定的 size 的宽度和高度。

另请参阅

setAttributeValue()

setUniformValue(location, point)
参数:
  • location – int

  • pointQPointF

将当前上下文中的均匀变量在 location 位置设置为点 point 的 x 和 y 坐标。

另请参阅

setAttributeValue()

setUniformValue(location, point)
参数:
  • location – int

  • pointQPoint

将当前上下文中的均匀变量在 location 位置设置为点 point 的 x 和 y 坐标。

另请参阅

setAttributeValue()

setUniformValue(location, value)
参数:

将当前上下文中的均匀变量在 location 位置设置为 4x4 矩阵 value

另请参阅

setAttributeValue()

setUniformValue(location, value)
参数:

将当前上下文中的均匀变量在 location 位置设置为 4x3 矩阵 value

注释

此函数不支持非方阵,即现代 OpenGL 版本中存在的类似 mat4x3 的 GLSL 类型。相反,它将均匀变量处理为一个 vec3 数组。

另请参阅

setAttributeValue()

setUniformValue(location, value)
参数:

将当前上下文中的均匀变量在 location 位置设置为一个 4x2 矩阵 value

注释

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

另请参阅

setAttributeValue()

setUniformValue(location, value)
参数:

将当前上下文中的location位置的uniform变量设置为3x4的矩阵value

注释

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

另请参阅

setAttributeValue()

setUniformValue(location, value)
参数:

将当前上下文中的location位置的uniform变量设置为3x3的矩阵value

另请参阅

setAttributeValue()

setUniformValue(location, value)
参数:

将当前上下文中的location位置的uniform变量设置为3x2的矩阵value

注释

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

另请参阅

setAttributeValue()

setUniformValue(location, value)
参数:

将当前上下文中的location位置的uniform变量设置为2x4的矩阵value

注释

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

另请参阅

setAttributeValue()

setUniformValue(location, value)
参数:

将当前上下文中的location位置的uniform变量设置为value

另请参阅

setAttributeValue()

setUniformValue(location, value)
参数:

将当前上下文中的location位置的uniform变量设置为value

另请参阅

setAttributeValue()

setUniformValue(location, value)
参数:

将当前上下文中的location位置的uniform变量设置为value

另请参阅

setAttributeValue()

setUniformValue(location, value)
参数:
  • location – int

  • valuefloat[][]

setUniformValue(location, value)
参数:
  • location – int

  • valuefloat[][]

setUniformValue(location, value)
参数:
  • location – int

  • valuefloat[][]

setUniformValue(location, value)
参数:
  • location – int

  • value – 单精度浮点数

setUniformValue(location, x, y)
参数:
  • location – int

  • x - 浮点数

  • y - 浮点数

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

  • x - 浮点数

  • y - 浮点数

  • z – 单精度浮点数

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

  • x - 浮点数

  • y - 浮点数

  • z – 单精度浮点数

  • w – 单精度浮点数

setUniformValue(location, value)
参数:
  • location – int

  • value – int

setUniformValue(location, value)
参数:
  • location – int

  • value – int

setUniformValue(name, value)
参数:

这是一个重载函数。

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

注释

此函数不支持非方阵,即现代 OpenGL 版本中存在的类似 mat2x3 的 GLSL 类型。相反,它将均匀变量处理为一个 vec3 数组。

另请参阅

setAttributeValue()

setUniformValue(location, color)
参数:
  • location – int

  • 颜色QColor

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

另请参阅

setAttributeValue()

setUniformValue(name, color)
参数:
  • name - str

  • 颜色QColor

这是一个重载函数。

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

另请参阅

setAttributeValue()

setUniformValue(name, value)
参数:

这是一个重载函数。

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

另请参阅

setAttributeValue()

setUniformValue(name, value)
参数:

这是一个重载函数。

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

注释

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

另请参阅

setAttributeValue()

setUniformValue(name, value)
参数:

这是一个重载函数。

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

注释

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

另请参阅

setAttributeValue()

setUniformValue(name, value)
参数:

这是一个重载函数。

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

另请参阅

setAttributeValue()

setUniformValue(name, value)
参数:

这是一个重载函数。

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

注释

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

另请参阅

setAttributeValue()

setUniformValue(name, value)
参数:

这是一个重载函数。

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

注释

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

另请参阅

setAttributeValue()

setUniformValue(name, value)
参数:

这是一个重载函数。

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

注释

此函数不支持非方阵,即现代 OpenGL 版本中存在的类似 mat4x3 的 GLSL 类型。相反,它将均匀变量处理为一个 vec3 数组。

另请参阅

setAttributeValue()

setUniformValue(name, value)
参数:

这是一个重载函数。

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

另请参阅

setAttributeValue()

setUniformValue(name, point)
参数:

这是一个重载函数。

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

另请参阅

setAttributeValue()

setUniformValue(name, point)
参数:

这是一个重载函数。

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

另请参阅

setAttributeValue()

setUniformValue(name, size)
参数:
  • name - str

  • sizeQSize

这是一个重载函数。

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

另请参阅

setAttributeValue()

setUniformValue(name, value)
参数:

这是一个重载函数。

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

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

setUniformValue(name, value)
参数:

这是一个重载函数。

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

另请参阅

setAttributeValue()

setUniformValue(name, value)
参数:

这是一个重载函数。

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

另请参阅

setAttributeValue()

setUniformValue(name, value)
参数:

这是一个重载函数。

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

另请参阅

setAttributeValue()

setUniformValue(name, value)
参数:
  • name - str

  • valuefloat[][]

setUniformValue(name, value)
参数:
  • name - str

  • valuefloat[][]

setUniformValue(name, value)
参数:
  • name - str

  • valuefloat[][]

setUniformValue(name, x, y)
参数:
  • name - str

  • x - 浮点数

  • y - 浮点数

setUniformValue(name, x, y, z)
参数:
  • name - str

  • x - 浮点数

  • y - 浮点数

  • z – 单精度浮点数

setUniformValue(name, x, y, z, w)
参数:
  • name - str

  • x - 浮点数

  • y - 浮点数

  • z – 单精度浮点数

  • w – 单精度浮点数

setUniformValue(location, value)
参数:

将当前上下文中位置为 location 的均匀变量设置为 2x2 矩阵 value.

另请参阅

setAttributeValue()

setUniformValue(name, size)
参数:

这是一个重载函数。

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

另请参阅

setAttributeValue()

setUniformValue1f(arg__1, arg__2)#
参数:
  • arg__1 – 整数

  • arg__2 – 浮点数

setUniformValue1f(arg__1, arg__2)
参数:
  • arg__1 – 字符串

  • arg__2 – 浮点数

setUniformValue1i(arg__1, arg__2)#
参数:
  • arg__1 – 字符串

  • arg__2 – 整数

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

  • arg__2 – 整数

setUniformValueArray(name, values, count, tupleSize)#
参数:
  • name - str

  • values - 浮点数

  • count – int

  • tupleSize - 整数

setUniformValueArray(name, values, count)
参数:
  • name - str

  • values – 整数

  • count – int

setUniformValueArray(name, values, count)
参数:
  • name - str

  • valuesunsigned int

  • count – int

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

  • values - 浮点数

  • count – int

  • tupleSize - 整数

setUniformValueArray(location, values, count)
参数:
  • location – int

  • values – 整数

  • count – int

setUniformValueArray(location, values, count)
参数:
  • location – int

  • valuesunsigned int

  • count – int

shaders()#
返回类型:

一个 QOpenGLShader 的列表

通过 addShader() 方法添加到此着色器程序的所有着色器的列表。

uniformLocation(name)#
参数:

name - QByteArray

返回类型:

int

这是一个重载函数。

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

另请参阅

attributeLocation()

uniformLocation(name)
参数:

name - str

返回类型:

int

这是一个重载函数。

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

另请参阅

attributeLocation()

uniformLocation(name)
参数:

name - str

返回类型:

int

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

另请参阅

attributeLocation()