gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:29:24 24 4
gpt4 key购买 nike

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

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

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

有什么帮助吗?

最佳答案

创建时只需设置D3D11_TEXTURE2D_DESCArraySize字段即可。

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

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

在 HLSL 中你只需要指定:

Texture2DArray myTexture;

代替

Texture2D myTexture;

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

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

关于c++ - 如何在 HLSL DirectX11 C++ 中使用 Texture2DArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20721760/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com