CubeMapTexture QML 类型

用于 3D 场景的立方体贴图纹理的定义。 更多信息...

导入声明import QtQuick3D
继承

Texture

详细描述

CubeMapTexture 是一个代表立方体贴图的 Texture。立方体贴图有 6 个面(X+、X-、Y+、Y-、Z+、Z-),每个面都是一个独立的 2D 图像。CubeMapTexture 允许 自定义材质后处理效果 在它们的着色器中与立方体贴图纹理一起工作。立方体贴图还可以用作用定义场景环境的 天空盒

CustomMaterial {
    property TextureInput customTexture: TextureInput {
        texture: CubeMapTexture {
            source: "cubemap.ktx"
        }
    }
    fragmentShader: "shader.frag"
}

在此可以实现 shader.frag,假设 customTexture 是具有 GLSL 类型 a samplerCube 的采样均匀量。这意味着 texture() GLSL 函数使用一个 vec3 作为采样器的纹理坐标。如果我们使用 Texture,该类型将是 sampler2D

void MAIN()
{
    vec4 c = texture(customTexture, NORMAL);
    BASE_COLOR = vec4(c.rgb, 1.0);
}

从只包含立方体贴图的容器中获取纹理只会加载面 0(X+)并导致 2D 纹理。而从这个相同的资产加载 CubeMapTexture 会加载所有 6 个面并导致结果为立方体贴图纹理。

CubeMapTexture 继承了 Texture 的所有属性。重要的区别在于 source 必须引用包含立方体贴图的图像文件,或者引用图像文件列表。在实际应用中,单个文件意味着包含 6 个面图像的 KTX 容器。

可以从 6 个单独的图像中获取 CubeMapTexture 有两种不同的方式。要么作为一个分号分隔的文件名列表,按 X+、X-、Y+、Y-、Z+、Z- 的顺序排列

CubeMapTexture {
    source: "maps/right.jpg;maps/left.jpg;maps/top.jpg;maps/bottom.jpg;maps/front.jpg;maps/back.jpg"
}

或者作为一个包含 "%p" 占位符的字符串,其中 "%p" 将被替换为字符串 "posx"、"negx"、"posy"、"negy"、"posz" 和 "negz",以生成六个文件名

CubeMapTexture {
    source: "maps/sky_%p.png"
    // equivalent to:
    // source: "maps/sky_posx.png;maps/sky_negx.png;maps/sky_posy.png;maps/sky_negy.png;maps/sky_posz.png;maps/sky_negz.png"
}

注意:目前不支持通过其他方式获取图像数据,例如 sourceItemtextureData

另请参阅:TextureCustomMaterialEffect

© 2024 Qt 公司。此处包含的文档贡献的版权归各自所有者。所提供的文档是根据由自由软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款许可的。Qt 及其标志是芬兰 Qt 公司和/或世界其他国家的商标。所有其他商标归其各自所有者所有。