DirectX12纹理格式
2D 纹理(2D texture)是一种由数据元素构成的矩阵,
纹理数据格式
纹理只能存储DXGI_FORMAT枚举类型中描述的特定格式的数据元素
- DXGI_FORMAT_R32G32B32_FLOAT:每个元素由3个32位浮点数分量构成 RGB各32位
- DXGI_FORMAT_R16G16B16A16_UNORM:每个元素由4个16位分量构成,每个分量都被映射到[0, 1]区间。RGBA各16位
- DXGI_FORMAT_R32G32_UINT:每个元素由2个32位无符号整数分量构成。RG各32位
- DXGI_FORMAT_R8G8B8A8_UNORM:每个元素由4个8位无符号分量构成,每个分量都被映射到[0, 1]区间。RGBA各8位
- DXGI_FORMAT_R8G8B8A8_SNORM:每个元素由4个8位有符号分量构成,每个分量都被映射到[-1, 1]区间。
- DXGI_FORMAT_R8G8B8A8_SINT:每个元素由4个8位有符号整数分量构成,每个分量都被映射到[-128, 127]区间。
- DXGI_FORMAT_R8G8B8A8_UINT:每个元素由4个8位无符号整数分量构成,每个分量都被映射到[0, 255]区间。
- DXGI_FORMAT_R16G16B16A16_TYPELESS:无类型格式保留的是由4个16位分量组成的元素,但并没有指出数据的具体类型。我们仅用它来预留内存,待纹理被绑定到渲染流水线再具体解释它的数据类型。
用途
-
用途之一是存储2D图像数据,这种情况下,纹理中每个元素存储的都是一个像素的颜色
-
法线贴图(normal mapping),纹理内的每个元素存储的就是一个3D 向量。
例如,格式DXGI_FORMAT_R32G32B32_FLOAT
中含有3个浮点数分量,因此可以利用坐标格式为浮点数的方式存储任意3D向量。