阅读这本书:“使用Direct3D 11进行实际渲染和计算”,并在网上寻找定义:https://learn.microsoft.com/en-us/windows/uwp/graphics-concepts/shader-resource-view--srv-
我仍然对ID3D11ShaderResourceView是什么感到困惑。
请记住,我正在学习DirectX 11来创建一个电子游戏。考虑到这一点..。
什么是阴影资源视图?在什么情况下,您会使用阴影资源视图?最重要的是,如何使用Shader资源视图?
我假设您可以在HLSL代码中使用这个资源,但在这本书中,我还没有看到如何这样做的示例,以及如何将其用于电子游戏引擎。
谢谢!
发布于 2017-09-30 01:18:27
在较早的版本(如Direct3D 9 )中,您作为单个接口(如IDirect3DTexture9、IDirect3DCubeTexture9或IDirect3DVolumeTexture9 )封装了图像位本身和预期的使用语义。这具有特殊的逻辑,使它也能作为呈现目标工作。
在Direct3D 10中,这分为两个元素:
ID3DxxTexture1D、ID3DxxTexture2D和ID3DxxTexture3DID3DxxShaderResourceView,要么是用于呈现纹理的- ID3DxxRenderTargetView。还有一个用于使用ID3D11UnorderedAccessView的DirectCompute。新设计的优点是,您可以有一个单一的ID3DxxTexture2D资源,并有一个SRV使用它来渲染,当你使用它作为渲染纹理的RTV。您可以将cubemap视为数组大小为6的二维纹理。
您可能会发现关于Microsoft的旧文档很有帮助。
你应该看看DirectX工具包教程
发布于 2017-10-11 09:38:57
所以现实生活中的例子就是阴影--基本上你是从灯光位置填充深度缓冲器,然后从摄像机位置通过几何图形,然后使用深度缓冲区的数据来计算像素是否在阴影中。因此,DirectX中的视图可以转换为“将此资源视为”。在第一部分中,您将使用纹理作为DepthStencilView (“将此纹理视为深度模板”),在下一部分中,您将使用相同的纹理作为对着色器的输入(ShaderResourceView,“将此纹理视为着色资源)。
这种“过渡”在资源同步方面非常重要。在DX11中,这是由驱动程序为您完成的,而在DX12中,您必须处理这个问题。
https://stackoverflow.com/questions/46493782
复制相似问题