[英]How to use Texture2DArray in HLSL DirectX11 C++
我只是想知道如何在HLSL中使用Texture2DArray。
我正在尝试实现一个模型加载器,其中模型具有不同的纹理量。 目前我的HLSL使用尺寸为2的Texture2D(纹理和普通纹理),但由于我的模型具有不同数量的纹理,我希望使用Texture2DArray,但不知道从哪里开始。 我一直试图在互联网上找到例子,但没有运气:(
我加载纹理,编译为'ID3D11ShaderResourceView *'所以我应该创建一个变量ID3D11ShaderResourceView **我创建一个点到纹理的点数组,然后将其传递给着色器或什么?
有帮助吗?
您只需在创建时设置D3D11_TEXTURE2D_DESC
的ArraySize
字段。
一个ShaderResourceView
查看整个数组,您不需要多个视图。 如果您没有在创建时提供自己的D3D11_SHADER_RESOURCE_VIEW_DESC
(而是传递nullptr),那么您已经设置好了。
如果您传递自己的D3D11_SHADER_RESOURCE_VIEW_DESC
然后将ViewDimension
字段设置为D3D11_SRV_DIMENSION_TEXTURE2DARRAY
,则填写视图描述的Texture2DArray
字段的所有4个成员( MostDetailedMip
, MipLevels
, FirstArraySlice
, ArraySize
)。
在HLSL中,您只需指定:
Texture2DArray myTexture;
代替
Texture2D myTexture;
当采样时,uv坐标是三维的。 x和y正常,但z是要读取的数组切片的索引。
如果您在创建时使用D3D11_SUBRESOURCE_DATA
结构初始化纹理,那么您只需要将指针传递给D3D11_SUBRESOURCE_DATA
的数组,该数组用于数组中的每个切片。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.