[英]Sending shader resource to GPU in DirectX 11
可以說我有一個簡單的2D紋理(着色器資源)
ID3D11ShaderResourceView* srvTexture;
和默認(立即)設備上下文
ID3D11DeviceContext* dc;
現在,我像這樣在Pixel Shader中設置紋理
ID3D11ShaderResourceView* srvArrayTexture[1];
srvArrayTexture[0] = srvTexture;
dc->PSSetShaderResources(
0, // start slot (not important in this case)
1, // nb of views (one texture)
srvArrayTexture); // my texture as array (because DirectX wants array)
我將這個過程理解為將實際紋理從RAM內存發送到GPU內存。 我徘徊,為什么還有類似的方法,例如VSSetShaderResources,GSSetShaderResources等。 這是否意味着每個流水線階段(VS,GS等)都有自己的GPU內存?
如果我打電話
dc->VSSetShaderResources(A);
dc->GSSetShaderResources(A);
dc->PSSetShaderResources(A);
這是否意味着我要發送三次相同的數據? 還是我的數據發送概念效率低下?
這三個功能只是將資源緩沖區中的特定資源綁定(而不是復制)到不同的着色器(頂點着色器,像素着色器,幾何着色器)。 可以在管道的不同階段讀取資源緩沖區。 在您的示例中,只有一個緩沖區“ A”。 但是,綁定到此緩沖區的着色器都有權讀取此緩沖區。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.