ShaderImage QML 类型
提供对着色器程序的图像访问。 更多信息...
导入声明 | import Qt3D.Render 2.7 |
实例化 | QShaderImage |
属性
详细描述
为实现着色器程序中的纹理内容的读取和写入操作而提供,它们需要作为 ShaderImage 进行暴露。纹理可以由多个多级层、层和面组成。此外,声明 ShaderImage 允许指定要访问的纹理内容中的哪个级别、层或面。
ShaderImage 必须作为参数的值分配,并引用有效的 Qt3D.Render.AbstractTexture 才能正常工作。
如果引用的纹理是一维数组、二维数组、三维数组、立方体贴图、立方体贴图数组或二维多采样数组纹理,可以使用 layered 属性来控制绑定整个纹理级别或单个纹理级别层或面。
ShaderImage 的支持仅限于 OpenGL 4,部分支持 OpenGL ES 3.1 和 3.2。
OpenGL 4 支持以下图像类型
GLSL 类型 | OpenGL 类型枚举 | 纹理类型 |
---|---|---|
image1D | GL_IMAGE_1D | Texture1D |
image2D | GL_IMAGE_2D | Texture2D |
image3D | GL_IMAGE_3D | Texture3D |
image2DRect | GL_IMAGE_2D_RECT | TextureRectangle |
imageCube | GL_IMAGE_CUBE | TextureCubeMap |
imageBuffer | GL_IMAGE_BUFFER | TextureBuffer |
image1DArray | GL_IMAGE_1D_ARRAY | Texture1DArray |
image2DArray | GL_IMAGE_2D_ARRAY | Texture2DArray |
imageCubeArray | GL_IMAGE_CUBE_MAP_ARRAY | TextureCubeMapArray |
image2DMS | GL_IMAGE_2D_MULTISAMPLE | Texture2DMultisample |
image2DMSArray | GL_IMAGE_2D_MULTISAMPLE_ARRAY | Texture2DMultisampleArray |
iimage1D | GL_INT_IMAGE_1D | Texture1D |
iimage2D | GL_INT_IMAGE_2D | Texture2D |
iimage3D | GL_INT_IMAGE_3D | Texture3D |
iimage2DRect | GL_INT_IMAGE_2D_RECT | TextureRectangle |
iimageCube | GL_INT_IMAGE_CUBE | TextureCubeMap |
iimageBuffer | GL_INT_IMAGE_BUFFER | TextureBuffer |
iimage1DArray | GL_INT_IMAGE_1D_ARRAY | Texture1DArray |
iimage2DArray | GL_INT_IMAGE_2D_ARRAY | Texture2DArray |
iimageCubeArray | GL_INT_IMAGE_CUBE_MAP_ARRAY | TextureCubeMapArray |
iimage2DMS | GL_INT_IMAGE_2D_MULTISAMPLE | Texture2DMultisample |
iimage2DMSArray | GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY | Texture2DMultisampleArray |
uimage1D | GL_UNSIGNED_INT_IMAGE_1D | Texture1D |
uimage2D | GL_UNSIGNED_INT_IMAGE_2D | Texture2D |
uimage3D | GL_UNSIGNED_INT_IMAGE_3D | Texture3D |
uimage2DRect | GL_UNSIGNED_INT_IMAGE_2D_RECT | TextureRectangle |
uimageCube | GL_UNSIGNED_INT_IMAGE_CUBE | TextureCubeMap |
uimageBuffer | GL_UNSIGNED_INT_IMAGE_BUFFER | TextureBuffer |
uimage1DArray | GL_UNSIGNED_INT_IMAGE_1D_ARRAY | Texture1DArray |
uimage2DArray | GL_UNSIGNED_INT_IMAGE_2D_ARRAY | Texture2DArray |
uimageCubeArray | GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY | TextureCubeMapArray |
uimage2DMS | GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE | Texture2DMultisample |
uimage2DMSArray | GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY | Texture2DMultisampleArray |
OpenGL ES 3.1 支持以下图像类型
GLSL 类型 | OpenGL 类型枚举 | 纹理类型 |
---|---|---|
image2D | GL_IMAGE_2D | Texture2D |
image3D | GL_IMAGE_3D | Texture3D |
imageCube | GL_IMAGE_CUBE | TextureCubeMap |
image2DArray | GL_IMAGE_2D_ARRAY | Texture2DArray |
iimage2D | GL_INT_IMAGE_2D | Texture2D |
iimage3D | GL_INT_IMAGE_3D | Texture3D |
iimageCube | GL_INT_IMAGE_CUBE | TextureCubeMap |
iimage2DArray | GL_INT_IMAGE_2D_ARRAY | Texture2DArray |
uimage2D | GL_UNSIGNED_INT_IMAGE_2D | Texture2D |
uimage3D | GL_UNSIGNED_INT_IMAGE_3D | Texture3D |
uimageCube | GL_UNSIGNED_INT_IMAGE_CUBE | TextureCubeMap |
uimage2DArray | GL_UNSIGNED_INT_IMAGE_2D_ARRAY | Texture2DArray |
OpenGL ES 3.2 支持所有 OpenGL ES 3.1 图像类型以及以下类型
GLSL 类型 | OpenGL 类型枚举 | 纹理类型 |
---|---|---|
imageBuffer | GL_IMAGE_BUFFER | TextureBuffer |
imageCubeArray | GL_IMAGE_CUBE_MAP_ARRAY | TextureCubeMapArray |
iimageBuffer | GL_IMAGE_BUFFER | TextureBuffer |
iimageCubeArray | GL_INT_IMAGE_CUBE_MAP_ARRAY | TextureCubeMapArray |
uimageBuffer | GL_UNSIGNED_INT_IMAGE_BUFFER | TextureBuffer |
uimageCubeArray | GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY | TextureCubeMapArray |
预期使用方式如下
import Qt3D.Render 2.14 Entity { ... Texture2D { id: tex2D ... } Material { parameters: Parameter { name: "imageUniformName" value: ShaderImage { texture: tex2D } } ... } ... }
属性文档
access : 枚举 |
指定从着色器实例到图像允许的访问类型。如果着色器试图从具有不兼容访问权限的图像中写入或读取,行为是未定义的。
常量 | 描述 |
---|---|
ShaderImage.ReadOnly | 只读访问。 |
ShaderImage.WriteOnly | 只写访问。 |
ShaderImage.ReadWrite | 读写访问。 |
默认值是 ShaderImage.ReadWrite。
format : 枚举 |
指定图像格式,这在从着色器保存值到 ShaderImage 时非常重要。
格式不必与引用纹理的格式相同。然而,它必须兼容(尺寸匹配但不一定按类类型匹配)。例如,格式为 R32F(32位大小,1x32类)的纹理可以用格式为 RGBA8I(32位大小,4x8类)的图像一起使用。OpenGL规范[rients]的第8.27表显示了所有受支持图像格式的尺寸和类型。
默认情况下,Qt3D会尝试将图像格式设置为与引用的纹理匹配。
默认值是 ShaderImage.Automatic。
layer : int |
包含应使用的引用纹理中的哪一层来创建 ShaderImage。如果将 layered 设置为 true 或引用的纹理类型不兼容层,则此属性不执行任何操作。
注意: 当引用的纹理是立方图或立方图数组类型,且 层 被设置为 false 时,可以使用以下方式检索面和层
cubeMapLayer = layer / 6 cubeMapFace = layer - (cubeMapLayer * 6)
默认值是 0。
layered : bool |
*
如果设置为 true,则当引用的纹理是单维数组、二维数组、三维数组、立方图、立方图数组、或二维多采样数组纹理时,将为所有层绑定整个层级。如果设置为 false,则仅绑定由 层 属性指定的单个层。
默认值是 false
。
mipLevel : int |
包含应使用的引用纹理中的哪个mip级别来创建 ShaderImage。
默认值是 0。
© 2024 Qt 公司有限。此处包含的文档贡献是相关所有者的版权。此处提供的文档受自由软件基金会发布的GNU自由文档许可证版本1.3条款许可。Qt及其相应标志是芬兰及/或世界其他地区的Qt公司有限责任公司的商标。所有其他商标均为其各自所有者的财产。