簡體   English   中英

在DirectX 11中將紋理數組發送到着色器

[英]Sending texture array to shader in DirectX 11

我幾乎沒有要在HLSL着色器中設置為數組的紋理。 每個紋理都表示為ID3D11ShaderResourceView *。 每個紋理的大小可能不同。

現在,如果我在D3D中將它們設置為數組:

ID3D11ShaderResourceView* m_array[3];

    m_array[0] = ...;
    m_array[1] = ...;
    m_array[2] = ...;

    m_deviceContext->PSSetShaderResources(
        0,  // Start slot
        3,  // Nb of textures
        m_array); // Array

在我的HLSL着色器中,我聲明:

Texture2D       g_textures[3];

是否可以正確映射?

通常,這是一種可用於將紋理數組從運行時映射到着色器執行的方法。 數組中的紋理尺寸是否匹配並不重要,但是,您可能需要在着色器代碼中考慮到這一點,具體取決於對紋理的采樣方式。

同樣,在您的HLSL中,您假設g_textures數組已分配給插槽0,因此如果由於某種原因它實際上並沒有到達插槽0(例如,着色器源中之前有另一個紋理資源),那么您將不會將目標資源設置為正確的插槽。 我發現最好明確地映射它們,例如:

Texture2D g_textures[3] : register(t0);

如果發生沖突,則會在(着色器)編譯時找到它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM