Forráskód Böngészése

feat: 添加贴图解释

nicetry12138 1 éve
szülő
commit
30df15c521
1 módosított fájl, 25 hozzáadás és 0 törlés
  1. 25 0
      图形学/DirectX学习/README.md

+ 25 - 0
图形学/DirectX学习/README.md

@@ -2659,3 +2659,28 @@ cbuffer cbSettings : register(b0) {
 }
 ```
 
+### 纹理贴图
+
+2D 纹理是一种特定数据元素所构成的矩阵,它的用处之一是存储 2D 图像数据,纹理中的每个元素都存储着对应像素的颜色。但是这不是唯一的用途,比如法线贴图每个纹理元素都存储的是一个 3D 向量而非颜色数据
+
+1D(`D3D12_RESOURCE_DIMENSION_TEXTURE1D`) 与 3D(`D3D12_RESOURCE_DIMENSION_TEXTURE3D`) 纹理就像由数据元素构成的 1D、3D 数组
+
+1D、2D 和 3D 纹理实则都是用泛型接口 `ID3D12Resource` 来表示
+
+纹理不同于缓冲区资源,因为缓冲区资源仅存储数据数组,纹理却可以有多个 mipmap 层级, GPU 会根据这个层级进行相应的特殊操作
+
+| 格式示例 | 含义 |
+| --- | --- |
+| DXGI_FORMAT_R32G32B32_FLOAT | 表示元素由 3 个 32 位浮点构成 |
+| DXGI_FORMAT_R16G16B16A16_UNORM | 表示元素由 4 个 16 位分量组成,映射到 [0, 1] 之间 |
+| DXGI_FORMAT_R32G32_UINT | 元素由  2 个 32 位无符号构成 |
+| DXGI_FORMAT_R8G8B8A8_UNORM | 元素由 4 个 8 位无符号分量构成,每个分量映射到范围 [0, 1] 之间 |
+| DXGI_FORMAT_R8G8B8A8_SNORM | 元素由 4 个 8 位无符号分量构成,每个分量映射到范围 [-1, 1] 之间 |
+| DXGI_FORMAT_R8G8B8A8_SINT | 元素由 4 个 8 位无符号分量构成,每个分量映射到范围 [-128, 127] 之间 |
+| DXGI_FORMAT_R8G8B8A8_UINT | 元素由 4 个 8 位无符号分量构成,每个分量映射到范围 [0, 255] 之间 |
+
+一个纹理可以绑定到渲染流水线的不同阶段,一个常见的例子是既可以将一纹理用作渲染目标,也可以把它作为着色器资源
+
+纹理不能同时身兼数职,将数据渲染到一个纹理之后,再用它作为着色器资源,这种方法称为**渲染到纹理**(`render-to-texture`)
+
+要使纹理扮演**渲染目标**与**着色器资源**这两种角色,就需要为此纹理资源创建两个描述符:一个存于渲染目标堆中(`D3D12_DESCRIPTOR_HEAP_TYPE_RTV`),一个位于着色器资源堆中(`D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV`)