【发布时间】:2015-09-29 22:36:35
【问题描述】:
假设我有一个简单的 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);
这是否意味着我要发送 3 次相同的数据?或者我的数据发送概念效率低下?
【问题讨论】:
标签: c++ directx-11