PySide6.Qt3DRender.Qt3DRender.QShaderImage¶
- class QShaderImage¶
为着色器程序提供图像访问。更多…
概要¶
属性¶
方法¶
def
__init__()def
access()def
format()def
layer()def
layered()def
mipLevel()def
texture()
插槽¶
def
setAccess()def
setFormat()def
setLayer()def
setLayered()def
setMipLevel()def
setTexture()
信号¶
def
accessChanged()def
formatChanged()def
layerChanged()def
layeredChanged()def
textureChanged()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
为了使纹理的内容在着色器中可用于读写操作,它们需要作为
QShaderImage暴露出来。纹理可以由多个mip级别、层和面组成。此外,声明一个QShaderImage允许指定我们想要访问的纹理内容的级别、层或面。QShaderImage必须被分配为QParameter的值,并引用一个有效的QAbstractTexture才能正常工作。如果引用的纹理是一维数组、二维数组、三维、立方体贴图、立方体贴图数组或二维多重采样数组纹理,可以绑定整个纹理级别或纹理级别的单个层或面。这可以通过
layered属性来控制。对
QShaderImage的支持仅在OpenGL 4中完全支持,在OpenGL ES 3.1和3.2中部分支持。OpenGL 4 支持以下图像类型:
GLSL 类型
OpenGL 类型枚举
纹理类型
image1D
GL_IMAGE_1D
QTexture1Dimage2D
GL_IMAGE_2D
QTexture2Dimage3D
GL_IMAGE_3D
QTexture3Dimage2DRect
GL_IMAGE_2D_RECT
QTextureRectangleimageCube
GL_IMAGE_CUBE
QTextureCubeMapimageBuffer
GL_IMAGE_BUFFER
QTextureBufferimage1DArray
GL_IMAGE_1D_ARRAY
QTexture1DArrayimage2DArray
GL_IMAGE_2D_ARRAY
QTexture2DArrayimageCubeArray
GL_IMAGE_CUBE_MAP_ARRAY
QTextureCubeMapArrayimage2DMS
GL_IMAGE_2D_MULTISAMPLE
QTexture2DMultisampleimage2DMSArray
GL_IMAGE_2D_MULTISAMPLE_ARRAY
QTexture2DMultisampleArrayiimage1D
GL_INT_IMAGE_1D
QTexture1Diimage2D
GL_INT_IMAGE_2D
QTexture2Diimage3D
GL_INT_IMAGE_3D
QTexture3Diimage2DRect
GL_INT_IMAGE_2D_RECT
QTextureRectangleiimageCube
GL_INT_IMAGE_CUBE
QTextureCubeMapiimageBuffer
GL_INT_IMAGE_BUFFER
QTextureBufferiimage1DArray
GL_INT_IMAGE_1D_ARRAY
QTexture1DArrayiimage2DArray
GL_INT_IMAGE_2D_ARRAY
QTexture2DArrayiimageCubeArray
GL_INT_IMAGE_CUBE_MAP_ARRAY
QTextureCubeMapArrayiimage2DMS
GL_INT_IMAGE_2D_MULTISAMPLE
QTexture2DMultisampleiimage2DMSArray
GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY
QTexture2DMultisampleArrayuimage1D
GL_UNSIGNED_INT_IMAGE_1D
QTexture1Duimage2D
GL_UNSIGNED_INT_IMAGE_2D
QTexture2Duimage3D
GL_UNSIGNED_INT_IMAGE_3D
QTexture3Duimage2DRect
GL_UNSIGNED_INT_IMAGE_2D_RECT
QTextureRectangleuimageCube
GL_UNSIGNED_INT_IMAGE_CUBE
QTextureCubeMapuimageBuffer
GL_UNSIGNED_INT_IMAGE_BUFFER
QTextureBufferuimage1DArray
GL_UNSIGNED_INT_IMAGE_1D_ARRAY
QTexture1DArrayuimage2DArray
GL_UNSIGNED_INT_IMAGE_2D_ARRAY
QTexture2DArrayuimageCubeArray
GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY
QTextureCubeMapArrayuimage2DMS
GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE
QTexture2DMultisampleuimage2DMSArray
GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY
QTexture2DMultisampleArrayOpenGL ES 3.1 支持以下图像类型:
GLSL 类型
OpenGL 类型枚举
纹理类型
image2D
GL_IMAGE_2D
QTexture2Dimage3D
GL_IMAGE_3D
QTexture3DimageCube
GL_IMAGE_CUBE
QTextureCubeMapimage2DArray
GL_IMAGE_2D_ARRAY
QTexture2DArrayiimage2D
GL_INT_IMAGE_2D
QTexture2Diimage3D
GL_INT_IMAGE_3D
QTexture3DiimageCube
GL_INT_IMAGE_CUBE
QTextureCubeMapiimage2DArray
GL_INT_IMAGE_2D_ARRAY
QTexture2DArrayuimage2D
GL_UNSIGNED_INT_IMAGE_2D
QTexture2Duimage3D
GL_UNSIGNED_INT_IMAGE_3D
QTexture3DuimageCube
GL_UNSIGNED_INT_IMAGE_CUBE
QTextureCubeMapuimage2DArray
GL_UNSIGNED_INT_IMAGE_2D_ARRAY
QTexture2DArrayOpenGL ES 3.2 支持所有 OpenGL ES 3.1 的图像类型以及以下内容:
GLSL 类型
OpenGL 类型枚举
纹理类型
imageBuffer
GL_IMAGE_BUFFER
QTextureBufferimageCubeArray
GL_IMAGE_CUBE_MAP_ARRAY
QTextureCubeMapArrayiimageBuffer
GL_IMAGE_BUFFER
QTextureBufferiimageCubeArray
GL_INT_IMAGE_CUBE_MAP_ARRAY
QTextureCubeMapArrayuimageBuffer
GL_UNSIGNED_INT_IMAGE_BUFFER
QTextureBufferuimageCubeArray
GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY
QTextureCubeMapArray预期的使用方式如下:
Qt3DRender::QTexture2D *tex2D = new Qt3DRender::QTexture2D(); ... Qt3DRender::QMaterial *material = new Qt3DRender::QMaterial(); ... Qt3DRender::QParameter *imageParameter = new Qt3DRender::QParameter(); Qt3DRender::QShaderImage *shaderImage = new Qt3DRender::QShaderImage(); shaderImage->setTexture(tex2D); imageParameter->setName("imageUniformName"); imageParameter->setValue(QVariant::fromValue(shaderImage)); material->addParameter(imageParamenter);
- class Access¶
常量
描述
Qt3DRender.QShaderImage.ReadOnly
图像将仅在着色器中读取
Qt3DRender.QShaderImage.WriteOnly
图像将仅从着色器中写入
Qt3DRender.QShaderImage.ReadWrite
图像将仅从着色器中读取和写入
- class ImageFormat¶
此列表描述了所有可能的图像格式
常量
描述
Qt3DRender.QShaderImage.NoFormat
GL_NONE
Qt3DRender.QShaderImage.Automatic
Qt 3D 将尝试根据引用的纹理自动确定格式。
Qt3DRender.QShaderImage.R8_UNorm
GL_R8 (GLSL 类型 r8, 支持 OpenGL 4.2+)
Qt3DRender.QShaderImage.RG8_UNorm
GL_RG8 (GLSL 类型 rg8, 支持 OpenGL 4.2+)
Qt3DRender.QShaderImage.RGBA8_UNorm
GL_RGBA8 (GLSL类型rgba8,支持OpenGL 4.2+,OpenGL ES 3.1+)
Qt3DRender.QShaderImage.R16_UNorm
GL_R16 (GLSL 类型 r16,支持 OpenGL 4.2+)
Qt3DRender.QShaderImage.RG16_UNorm
GL_RG16 (GLSL 类型 rg16,支持 OpenGL 4.2+)
Qt3DRender.QShaderImage.RGBA16_UNorm
GL_RGBA16 (GLSL类型rgba16,由OpenGL 4.2+支持)
Qt3DRender.QShaderImage.R8_SNorm
GL_R8_SNORM (GLSL类型 r8_snorm, 支持OpenGL 4.2+)
Qt3DRender.QShaderImage.RG8_SNorm
GL_RG8_SNORM (GLSL 类型 rg8_snorm, 支持 OpenGL 4.2+)
Qt3DRender.QShaderImage.RGBA8_SNorm
GL_RGBA8_SNORM (GLSL 类型 rgba8_snorm, 支持 OpenGL 4.2+, OpenGL ES 3.1+)
Qt3DRender.QShaderImage.R16_SNorm
GL_R16_SNORM (GLSL 类型 r16_snorm, 支持 OpenGL 4.2+)
Qt3DRender.QShaderImage.RG16_SNorm
GL_RG16_SNORM (GLSL 类型 rg16_snorm, 支持 OpenGL 4.2+)
Qt3DRender.QShaderImage.RGBA16_SNorm
GL_RGBA16_SNORM (GLSL 类型 rgba16_snorm, 支持 OpenGL 4.2+)
Qt3DRender.QShaderImage.R8U
GL_R8UI (GLSL 类型 r8ui, 支持 OpenGL 4.2+)
Qt3DRender.QShaderImage.RG8U
GL_RG8UI (GLSL 类型 rg8ui,支持 OpenGL 4.2+)
Qt3DRender.QShaderImage.RGBA8U
GL_RGBA8UI (GLSL 类型 rgba8ui, 支持 OpenGL 4.2+, OpenGL ES 3.1+)
Qt3DRender.QShaderImage.R16U
GL_R16UI (GLSL 类型 r16ui, 支持 OpenGL 4.2+)
Qt3DRender.QShaderImage.RG16U
GL_RG16UI (GLSL 类型 rg16ui,由 OpenGL 4.2+ 支持)
Qt3DRender.QShaderImage.RGBA16U
GL_RGBA16UI (GLSL 类型 rgba16ui, 支持 OpenGL 4.2+, OpenGL ES 3.1+)
Qt3DRender.QShaderImage.R32U
GL_R32UI (GLSL 类型 r32ui, 支持 OpenGL 4.2+, OpenGL ES 3.1)
Qt3DRender.QShaderImage.RG32U
GL_RG32UI (GLSL 类型 rg32ui,支持 OpenGL 4.2+)
Qt3DRender.QShaderImage.RGBA32U
GL_RGBA32UI (GLSL 类型 rgba32ui, 支持 OpenGL 4.2+, OpenGL ES 3.1+)
Qt3DRender.QShaderImage.R8I
GL_R8I (GLSL 类型 r8i, 支持 OpenGL 4.2+)
Qt3DRender.QShaderImage.RG8I
GL_RG8I (GLSL 类型 rg8i, 支持 OpenGL 4.2+)
Qt3DRender.QShaderImage.RGBA8I
GL_RGBA8I (GLSL 类型 rgba8i,支持 OpenGL 4.2+,OpenGL ES 3.1+)
Qt3DRender.QShaderImage.R16I
GL_R16I (GLSL 类型 r16i, 支持 OpenGL 4.2+)
Qt3DRender.QShaderImage.RG16I
GL_RG16I (GLSL 类型 rg16i, 支持 OpenGL 4.2+)
Qt3DRender.QShaderImage.RGBA16I
GL_RGBA16I (GLSL 类型 rgba16i, 支持 OpenGL 4.2+, OpenGL ES 3.1)
Qt3DRender.QShaderImage.R32I
GL_R32I (GLSL 类型 r32i, 支持 OpenGL 4.2+, OpenGL ES 3.1+)
Qt3DRender.QShaderImage.RG32I
GL_RG32I (GLSL 类型 rg32i,由 OpenGL 4.2+ 支持)
Qt3DRender.QShaderImage.RGBA32I
GL_RGBA32I (GLSL 类型 rgba32i, 支持 OpenGL 4.2+, OpenGL ES 3.1+)
Qt3DRender.QShaderImage.R16F
GL_R16F (GLSL 类型 r16f, 支持 OpenGL 4.2+)
Qt3DRender.QShaderImage.RG16F
GL_RG16F (GLSL 类型 rg16f, 支持 OpenGL 4.2+)
Qt3DRender.QShaderImage.RGBA16F
GL_RGBA16F (GLSL 类型 rgba16f, 支持 OpenGL 4.2+, OpenGL ES 3.1+)
Qt3DRender.QShaderImage.R32F
GL_R32F (GLSL 类型 r32f, 支持 OpenGL 4.2+, OpenGL ES 3.1+)
Qt3DRender.QShaderImage.RG32F
GL_RG32F (GLSL类型rg32f,由OpenGL 4.2+支持)
Qt3DRender.QShaderImage.RGBA32F
GL_RGBA32F (GLSL类型rgba32f,支持OpenGL 4.2+,OpenGL ES 3.1+)
Qt3DRender.QShaderImage.RG11B10F
GL_R11F_G11F_B10F (GLSL 类型 r11f_g11f_b10f,由 OpenGL 4.2+ 支持)
Qt3DRender.QShaderImage.RGB10A2
GL_RGB10_A2 (GLSL 类型 rgb10_a2,支持 OpenGL 4.2+)
Qt3DRender.QShaderImage.RGB10A2U
GL_RGB10_A2UI (GLSL 类型 rgb10_a2ui,支持 OpenGL 4.2+)
注意
当使用
from __feature__ import true_property时,属性可以直接使用,否则通过访问器函数使用。- property accessᅟ: Qt3DRender.QShaderImage.Access¶
指定我们希望允许从着色器实例对图像进行的访问类型。如果着色器尝试从具有不兼容访问权限的图像进行写入或读取,则行为是未定义的。
默认值为
ReadWrite。- Access functions:
- property formatᅟ: Qt3DRender.QShaderImage.ImageFormat¶
指定图像格式,这在将值从着色器存储到图像中时非常重要。
格式不必与引用的纹理格式相同。然而,它必须是兼容的(大小匹配但不一定按类别类型)。例如,格式为R32F(大小为32位,类别为1x32)的纹理可以与格式为RGBA8I(大小为32位,类别为4x8)的图像一起使用。OpenGL规范的表8.27显示了所有支持的图像格式的大小和类别。
默认情况下,Qt3D 会尝试设置图像格式以匹配引用纹理的格式。
默认值为
Automatic。- Access functions:
- property layerᅟ: int¶
确定引用纹理中的哪一层应该用于
QShaderImage。如果layered设置为true,或者引用纹理的类型与层不兼容,则此属性无效。注意
当引用的纹理类型为立方体贴图或立方体贴图数组且
ĺayered设置为false时,面和层的获取方式如下:cubeMapLayer = layer / 6 cubeMapFace = layer - (cubeMapLayer * 6)
默认值为0。
- Access functions:
- property layeredᅟ: bool¶
*
如果设置为true,如果引用的纹理是一维数组、二维数组、三维、立方体贴图、立方体贴图数组或二维多重采样数组纹理,整个级别将绑定到所有层。如果设置为false,则仅绑定由
layer属性指定的单层。默认值为
false。- Access functions:
- property mipLevelᅟ: int¶
确定应该使用引用纹理中的哪个mipLevel用于
QShaderImage。默认值为0。
- Access functions:
- property textureᅟ: QAbstractTexture¶
- Access functions:
- __init__([parent=None])¶
- Parameters:
parent –
QNode
- access()¶
- Return type:
Access
另请参阅
setAccess()
属性
accessᅟ的获取器。- accessChanged(access)¶
- Parameters:
access –
Access
属性
accessᅟ的通知信号。- format()¶
- Return type:
ImageFormat
另请参阅
setFormat()
属性
formatᅟ的获取器。- formatChanged(format)¶
- Parameters:
格式 –
ImageFormat
属性
formatᅟ的通知信号。- layer()¶
- Return type:
整数
另请参阅
setLayer()
属性
layerᅟ的获取器。- layerChanged(layer)¶
- Parameters:
layer – 整数
属性
layerᅟ的通知信号。- layered()¶
- Return type:
布尔
另请参阅
setLayered()
属性
layeredᅟ的获取器。- layeredChanged(layered)¶
- Parameters:
分层 – 布尔值
属性
layeredᅟ的通知信号。- mipLevel()¶
- Return type:
整数
另请参阅
setMipLevel()
属性
mipLevelᅟ的获取器。- mipLevelChanged(mipLevel)¶
- Parameters:
mipLevel – int
属性
mipLevelᅟ的通知信号。- setAccess(access)¶
- Parameters:
access –
访问
另请参阅
access()
属性
accessᅟ的设置器。- setFormat(format)¶
- Parameters:
格式 –
ImageFormat
另请参阅
format()
属性
formatᅟ的设置器。- setLayer(layer)¶
- Parameters:
layer – 整数
另请参阅
layer()
属性
layerᅟ的设置器。- setLayered(layered)¶
- Parameters:
分层 – 布尔值
另请参阅
layered()
属性
layeredᅟ的设置器。- setMipLevel(mipLevel)¶
- Parameters:
mipLevel – int
另请参阅
mipLevel()
属性
mipLevelᅟ的设置器。- setTexture(texture)¶
- Parameters:
纹理 –
QAbstractTexture
另请参阅
texture()
属性
textureᅟ的设置器。- texture()¶
- Return type:
QAbstractTexture
另请参阅
setTexture()
属性
textureᅟ的获取器。- textureChanged(texture)¶
- Parameters:
纹理 –
QAbstractTexture
属性
textureᅟ的通知信号。