DirectX 11 什么是着色器资源视图

Mik*_*050 3 shader directx-11

阅读本书:“使用 Direct3D 11 进行实际渲染和计算”,并在线查找定义:https : //docs.microsoft.com/en-us/windows/uwp/graphics-concepts/shader-resource-view-- srv-

我仍然对 ID3D11ShaderResourceView 是什么感到困惑。

请记住,我正在学习 DirectX 11 来创建视频游戏。考虑到这一点 ...

什么是着色器资源视图?在什么情况下您会使用着色器资源视图?最重要的是,您如何使用着色器资源视图?

我假设你可以在你的 HLSL 代码中使用这个资源,但在书中我还没有看到一个关于如何做到这一点的例子,以及它用于视频游戏引擎的通用方式。

谢谢!

Chu*_*urn 6

在旧版本如的Direct3D 9,你必须为单一的界面,例如IDirect3DTexture9IDirect3DCubeTexture9或者IDirect3DVolumeTexture9这两种封装的图像位本身和使用情况的预期语义。这具有特殊的逻辑,使其也可以用作渲染目标。

在 Direct3D 10 中,这被分为两个元素:

  • 资源(即,图像比特)等ID3DxxTexture1DID3DxxTexture2DID3DxxTexture3D

  • 使用语义要么ID3DxxShaderResourceView是用于读取着色器中的纹理,要么ID3D10RenderTargetView是用于渲染纹理。

较新设计的优点是您可以拥有单个ID3DxxTexture2D资源并在使用它进行渲染时拥有 SRV,而在将其用作渲染纹理时拥有 RTV。您可以将立方体贴图视为数组大小为 6 的 2D 纹理。

您可能会发现MSDN上的旧文档很有帮助。

你应该看看DirectX Tool Kit 教程