簡體   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