本部分包含有关压缩纹理格式的内部组织的信息。 不需要这些详细信息即可使用压缩纹理,因为可以使用 D3DX 函数转换到压缩格式和从压缩格式转换。 但是,如果要直接对压缩图面数据进行作,此信息非常有用。
Direct3D 使用压缩格式,将纹理映射划分为 4x4 纹素块。 如果纹理不包含透明度 (不透明)或透明度是由 1 位 alpha 指定的,则 8 字节块表示纹理贴图块。 如果纹理贴图确实包含透明纹素,则使用 alpha 通道,则 16 字节块表示它。
- 不透明和 1 位 Alpha 纹理(Direct3D 9)
- 使用 Alpha 通道 纹理 (Direct3D 9)
任何单个纹理都必须指定其数据存储为每个组 16 个纹素的 64 位或 128 位。 如果 64 位块(即 DXT1 格式)用于纹理,则可以在同一纹理中基于每个块混合不透明和 1 位 alpha 格式。 换句话说,对 16 个纹素块的每个块执行无符号整数数量级color_0和color_1的比较。
使用 128 位块时,必须为整个纹理指定 alpha 通道(格式 DXT2 或 DXT3)或内插模式(格式 DXT4 或 DXT5)。 与颜色一样,选择内插模式时,可以逐个块使用八个内插 alpha 或六个内插 alphas 模式。 再次对alpha_0和alpha_1进行数量级比较时,逐个块执行。
DXTn 格式的音调不同于 DirectX 7.0 中返回的内容。 音调现在以字节为单位(而不是块)。 例如,如果宽度为 16,则将有四个块的间距(4*8 表示 DXT1,4*16 表示 DXT2-5)。
相关主题