好了,所以假設我有,在我的着色器的地方,如下聲明(注意我使傳統支持共享DX9和DX10之間着色器):D3D10 HLSL:我如何通過反射將紋理綁定到全局Texture2D?
Texture2D DiffuseMap;
我可以編譯了,沒有任何問題的着色器,但對於如何將ShaderResourceView綁定到「DiffuseMap」,我略有損失。當我「反思」着色器時,我寧願將它變成一個常量緩衝區中的變量。它沒有。事實上,我似乎無法在任何地方找到它。那麼我怎麼知道我應該綁定ShaderResourceView的紋理「舞臺」(使用DX9術語)呢?
編輯:我發現我可以通過使用「GetResourceBindingDesc」來識別採樣器名稱。我不知道,可以幫助我的人,雖然:(
EDIT2:同樣我沒有注意到其在DX9一樣好......我也就是隻能得到採樣
EDIT3:我的Texture2D和取樣是這樣的:
Texture2D DiffuseMap : DiffuseTexture;
sampler DiffuseSampler = sampler_state
{
Texture = (DiffuseMap);
MinFilter = Linear;
MaxFilter = Linear;
};
現在效果框架的工作,我可以通過語義「DiffuseTexture」得到的Texture2D然後我就可以建立一個ResourceView中(D3D10)/紋理(D3D9)到的Texture2D。 。唉,似乎沒有辦法通過使用bog標準着色器來處理「語義」(知道D3D如何做,但研究D3D11效果框架讓我無處可見,因此f AR。它似乎是從二進制文件(即已編譯的數據)中讀出來的,我只能在那裏看到「DiffuseSampler」)。
所以你有一個DX9的.fx文件(或只是.vs/.ps?),並且想要編譯它並使用反射在DX10上下文中運行它? – Stringer 2010-07-07 22:04:48
有效......是的。 – Goz 2010-07-08 06:10:34
嗯,我現在看到你的問題。但是如果你有「DiffuseSampler」,就足以知道你需要綁定到一個給定的槽,一個漫反射紋理的SRV,不是嗎?不知道是否需要使用* SetSamplers將DX10採樣器狀態綁定到同一個插槽。 – Stringer 2010-07-08 11:27:07