[英]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.