渲染带纹理的立方体-ecc 算法p 256曲线 规范

时间:2024-07-01 03:56:33
【文件属性】:

文件名称:渲染带纹理的立方体-ecc 算法p 256曲线 规范

文件大小:6.56MB

文件格式:PDF

更新时间:2024-07-01 03:56:33

DX12游戏开发

4.4 渲染带纹理的立方体 4.4.1 着色器资源视图 纹理与顶点缓存、索引缓存一样需要绑定到 GPU 上才能使用,所以先要再 HLSL 代码中 (参看 Tutorial07.fx)定义一个纹理类型资源,代码如下所示: Texture2D txDiffuse : register( t0 ); 纹理资源的语义用 register(tN), 其中 t 表示纹理,N 为寄存器的编号,由于只使用一 张纹理,所以 N 为 0。 在 C++代码中定义一个着色器资源视图 ID3D11ShaderResourceView 类型的变量,用 它来存储被加载到内存的 dds 图片。变量声明方式如下所示: ID3D11ShaderResourceView* g_pTextureRV = nullptr; 从硬盘加载一个 dds 图片到内存可以通过调用 CreateDDSTextureFromFile 函数来实 现,它有 4 个参数。第一个参数 ID3D11Device 类型,它是创建资源和枚举一个显卡性能的 DirectX3D 渲染设备指针;第二个参数字符串类型,它是要加载的 dds 图片文件路径;第三 个参数本例不使用,所有为空(nullptr);第四个参数是 ID3D11ShaderResourceView 类 型的引用,传入前面定义的着色器资源视图变量 g_pTextureRV 的应用即可。加载一个 dds 图片的代码如下所示: HRESULT hr = CreateDDSTextureFromFile(pd3dDevice, L"ship.dds", nullptr, &g_pTextureRV); if (FAILED(hr)) return hr; dds 图片加载到了内存以后,还需要在程序运行期间,每一帧渲染前,通过调用函数 ID3D11DeviceContext:: PSSetShaderResources 将这个着色器视图资源绑定到 GPU 上。 该函数有 3 个参数,第一个参数为图像处理器(GPU)的资源视图寄存器输入槽,本例只有 一个资源视图,只需要一个输入槽,因此这个参数设为 0;第二个参数为资源视图的个数, 本列只有一个资源视图,设为 1;第三个参数为所有资源视图的指针地址。绑定着色器视图 资源的具体代码如下所示: pd3dImmediateContext->PSSetShaderResources(0, 1, &g_pTextureRV); 程序退出前,要记得释放这个着色器视图资源,释放太资源的代码如下所示: SAFE_RELEASE(g_pTextureRV);


网友评论