Provides Image access to shader programs. 更多 …
New in version 5.14.
def
setAccess
(access)
def
setFormat
(format)
def
setLayer
(layer)
def
setLayered
(layered)
def
setMipLevel
(mipLevel)
def
setTexture
(texture)
def
accessChanged
(access)
def
formatChanged
(format)
def
layerChanged
(layer)
def
layeredChanged
(layered)
def
mipLevelChanged
(mipLevel)
def
textureChanged
(texture)
To make the content of textures available for read and write operations in a shader, they need to exposed as
QShaderImage. Textures can be composed of several mip levels, layers and faces. Additionally declaring aQShaderImageallows specifying which level, layer or face of the texture content we want to access.
QShaderImagehas to be assigned as aQParameter‘s value and reference a validQAbstractTextureto work properly.If the referenced texture is a one-dimensional array, two-dimensional array, three-dimensional, cube map, cube map array, or two-dimensional multisample array texture, it is possible to bind either the entire texture level or a single layer or face of the texture level. This can be controlled with the
layered特性。支持
QShaderImageis only supported with OpenGL 4 and partially with OpenGL ES 3.1 and 3.2.OpenGL 4 supports the following image types:
GLSL Type
OpenGL Type Enum
Texture Type
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 supports the following image types:
GLSL Type
OpenGL Type Enum
Texture Type
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 supports all of the OpenGL ES 3.1 image types as well as the following:
GLSL Type
OpenGL Type Enum
Texture Type
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
QTextureCubeMapArrayExpected use would look like:
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);
PySide2.Qt3DRender.Qt3DRender.
QShaderImage
(
[
parent=None
]
)
¶
parent
–
QNode
PySide2.Qt3DRender.Qt3DRender.QShaderImage.
Access
¶
|
常量 |
描述 |
|---|---|
|
Qt3DRender.QShaderImage.ReadOnly |
Image will only be read from in shaders |
|
Qt3DRender.QShaderImage.WriteOnly |
Image will only be written into from shaders |
|
Qt3DRender.QShaderImage.ReadWrite |
Image will only be read and written into from shaders |
PySide2.Qt3DRender.Qt3DRender.QShaderImage.
ImageFormat
¶
This list describes all possible image formats
|
常量 |
描述 |
|---|---|
|
Qt3DRender.QShaderImage.NoFormat |
GL_NONE |
|
Qt3DRender.QShaderImage.Automatic |
Qt 3D will try to determine the format automatically based on the referenced texture. |
|
Qt3DRender.QShaderImage.R8_UNorm |
GL_R8 (GLSL type r8, supported by OpenGL 4.2+) |
|
Qt3DRender.QShaderImage.RG8_UNorm |
GL_RG8 (GLSL type rg8, supported by OpenGL 4.2+) |
|
Qt3DRender.QShaderImage.RGBA8_UNorm |
GL_RGBA8 (GLSL type rgba8, supported by OpenGL 4.2+, OpenGL ES 3.1+) |
|
Qt3DRender.QShaderImage.R16_UNorm |
GL_R16 (GLSL type r16, supported by OpenGL 4.2+) |
|
Qt3DRender.QShaderImage.RG16_UNorm |
GL_RG16 (GLSL type rg16, supported by OpenGL 4.2+) |
|
Qt3DRender.QShaderImage.RGBA16_UNorm |
GL_RGBA16 (GLSL type rgba16, supported by OpenGL 4.2+) |
|
Qt3DRender.QShaderImage.R8_SNorm |
GL_R8_SNORM (GLSL type r8_snorm, supported by OpenGL 4.2+) |
|
Qt3DRender.QShaderImage.RG8_SNorm |
GL_RG8_SNORM (GLSL type rg8_snorm, supported by OpenGL 4.2+) |
|
Qt3DRender.QShaderImage.RGBA8_SNorm |
GL_RGBA8_SNORM (GLSL type rgba8_snorm, supported by OpenGL 4.2+, OpenGL ES 3.1+) |
|
Qt3DRender.QShaderImage.R16_SNorm |
GL_R16_SNORM (GLSL type r16_snorm, supported by OpenGL 4.2+) |
|
Qt3DRender.QShaderImage.RG16_SNorm |
GL_RG16_SNORM (GLSL type rg16_snorm, supported by OpenGL 4.2+) |
|
Qt3DRender.QShaderImage.RGBA16_SNorm |
GL_RGBA16_SNORM (GLSL type rgba16_snorm, supported by OpenGL 4.2+) |
|
Qt3DRender.QShaderImage.R8U |
GL_R8UI (GLSL type r8ui, supported by OpenGL 4.2+) |
|
Qt3DRender.QShaderImage.RG8U |
GL_RG8UI (GLSL type rg8ui, supported by OpenGL 4.2+) |
|
Qt3DRender.QShaderImage.RGBA8U |
GL_RGBA8UI (GLSL type rgba8ui, supported by OpenGL 4.2+, OpenGL ES 3.1+) |
|
Qt3DRender.QShaderImage.R16U |
GL_R16UI (GLSL type r16ui, supported by OpenGL 4.2+) |
|
Qt3DRender.QShaderImage.RG16U |
GL_RG16UI (GLSL type rg16ui, supported by OpenGL 4.2+) |
|
Qt3DRender.QShaderImage.RGBA16U |
GL_RGBA16UI (GLSL type rgba16ui, supported by OpenGL 4.2+, OpenGL ES 3.1+) |
|
Qt3DRender.QShaderImage.R32U |
GL_R32UI (GLSL type r32ui, supported by OpenGL 4.2+, OpenGL ES 3.1) |
|
Qt3DRender.QShaderImage.RG32U |
GL_RG32UI (GLSL type rg32ui, supported by OpenGL 4.2+) |
|
Qt3DRender.QShaderImage.RGBA32U |
GL_RGBA32UI (GLSL type rgba32ui, supported by OpenGL 4.2+, OpenGL ES 3.1+) |
|
Qt3DRender.QShaderImage.R8I |
GL_R8I (GLSL type r8i, supported by OpenGL 4.2+) |
|
Qt3DRender.QShaderImage.RG8I |
GL_RG8I (GLSL type rg8i, supported by OpenGL 4.2+) |
|
Qt3DRender.QShaderImage.RGBA8I |
GL_RGBA8I (GLSL type rgba8i, supported by OpenGL 4.2+, OpenGL ES 3.1+) |
|
Qt3DRender.QShaderImage.R16I |
GL_R16I (GLSL type r16i, supported by OpenGL 4.2+) |
|
Qt3DRender.QShaderImage.RG16I |
GL_RG16I (GLSL type rg16i, supported by OpenGL 4.2+) |
|
Qt3DRender.QShaderImage.RGBA16I |
GL_RGBA16I (GLSL type rgba16i, supported by OpenGL 4.2+, OpenGL ES 3.1) |
|
Qt3DRender.QShaderImage.R32I |
GL_R32I (GLSL type r32i, supported by OpenGL 4.2+, OpenGL ES 3.1+) |
|
Qt3DRender.QShaderImage.RG32I |
GL_RG32I (GLSL type rg32i, supported by OpenGL 4.2+) |
|
Qt3DRender.QShaderImage.RGBA32I |
GL_RGBA32I (GLSL type rgba32i, supported by OpenGL 4.2+, OpenGL ES 3.1+) |
|
Qt3DRender.QShaderImage.R16F |
GL_R16F (GLSL type r16f, supported by OpenGL 4.2+) |
|
Qt3DRender.QShaderImage.RG16F |
GL_RG16F (GLSL type rg16f, supported by OpenGL 4.2+) |
|
Qt3DRender.QShaderImage.RGBA16F |
GL_RGBA16F (GLSL type rgba16f, supported by OpenGL 4.2+, OpenGL ES 3.1+) |
|
Qt3DRender.QShaderImage.R32F |
GL_R32F (GLSL type r32f, supported by OpenGL 4.2+, OpenGL ES 3.1+) |
|
Qt3DRender.QShaderImage.RG32F |
GL_RG32F (GLSL type rg32f, supported by OpenGL 4.2+) |
|
Qt3DRender.QShaderImage.RGBA32F |
GL_RGBA32F (GLSL type rgba32f, supported by OpenGL 4.2+, OpenGL ES 3.1+) |
|
Qt3DRender.QShaderImage.RG11B10F |
GL_R11F_G11F_B10F (GLSL type r11f_g11f_b10f, supported by OpenGL 4.2+) |
|
Qt3DRender.QShaderImage.RGB10A2 |
GL_RGB10_A2 (GLSL type rgb10_a2, supported by OpenGL 4.2+) |
|
Qt3DRender.QShaderImage.RGB10A2U |
GL_RGB10_A2UI (GLSL type rgb10_a2ui, supported by OpenGL 4.2+) |
PySide2.Qt3DRender.Qt3DRender.QShaderImage.
access
(
)
¶
另请参阅
PySide2.Qt3DRender.Qt3DRender.QShaderImage.
format
(
)
¶
另请参阅
PySide2.Qt3DRender.Qt3DRender.QShaderImage.
formatChanged
(
format
)
¶
format
–
ImageFormat
PySide2.Qt3DRender.Qt3DRender.QShaderImage.
layer
(
)
¶
int
另请参阅
PySide2.Qt3DRender.Qt3DRender.QShaderImage.
layerChanged
(
layer
)
¶
layer
–
int
PySide2.Qt3DRender.Qt3DRender.QShaderImage.
layered
(
)
¶
bool
另请参阅
PySide2.Qt3DRender.Qt3DRender.QShaderImage.
layeredChanged
(
layered
)
¶
layered
–
bool
PySide2.Qt3DRender.Qt3DRender.QShaderImage.
mipLevel
(
)
¶
int
另请参阅
PySide2.Qt3DRender.Qt3DRender.QShaderImage.
mipLevelChanged
(
mipLevel
)
¶
mipLevel
–
int
PySide2.Qt3DRender.Qt3DRender.QShaderImage.
setFormat
(
format
)
¶
format
–
ImageFormat
另请参阅
PySide2.Qt3DRender.Qt3DRender.QShaderImage.
setLayered
(
layered
)
¶
layered
–
bool
另请参阅
PySide2.Qt3DRender.Qt3DRender.QShaderImage.
setMipLevel
(
mipLevel
)
¶
mipLevel
–
int
另请参阅
PySide2.Qt3DRender.Qt3DRender.QShaderImage.
setTexture
(
texture
)
¶
texture
–
QAbstractTexture
另请参阅
PySide2.Qt3DRender.Qt3DRender.QShaderImage.
texture
(
)
¶
QAbstractTexture
另请参阅
PySide2.Qt3DRender.Qt3DRender.QShaderImage.
textureChanged
(
texture
)
¶
texture
–
QAbstractTexture