繁体   English   中英

如何在HLSL DirectX11 C ++中使用Texture2DArray

[英]How to use Texture2DArray in HLSL DirectX11 C++

我只是想知道如何在HLSL中使用Texture2DArray。

我正在尝试实现一个模型加载器,其中模型具有不同的纹理量。 目前我的HLSL使用尺寸为2的Texture2D(纹理和普通纹理),但由于我的模型具有不同数量的纹理,我希望使用Texture2DArray,但不知道从哪里开始。 我一直试图在互联网上找到例子,但没有运气:(

我加载纹理,编译为'ID3D11ShaderResourceView *'所以我应该创建一个变量ID3D11ShaderResourceView **我创建一个点到纹理的点数组,然后将其传递给着色器或什么?

有帮助吗?

您只需在创建时设置D3D11_TEXTURE2D_DESCArraySize字段。

一个ShaderResourceView查看整个数组,您不需要多个视图。 如果您没有在创建时提供自己的D3D11_SHADER_RESOURCE_VIEW_DESC (而是传递nullptr),那么您已经设置好了。

如果您传递自己的D3D11_SHADER_RESOURCE_VIEW_DESC然后将ViewDimension字段设置为D3D11_SRV_DIMENSION_TEXTURE2DARRAY ,则填写视图描述的Texture2DArray字段的所有4个成员( MostDetailedMipMipLevelsFirstArraySliceArraySize )。

在HLSL中,您只需指定:

Texture2DArray myTexture;

代替

Texture2D myTexture;

当采样时,uv坐标是三维的。 x和y正常,但z是要读取的数组切片的索引。

如果您在创建时使用D3D11_SUBRESOURCE_DATA结构初始化纹理,那么您只需要将指针传递给D3D11_SUBRESOURCE_DATA的数组,该数组用于数组中的每个切片。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM