2013-05-06 444 views
2

我有一個紋理,我需要知道它在像素着色器中的尺寸。這看起來像GetDimensions的工作。下面的代碼:HLSL:在像素着色器中獲取紋理尺寸

Texture2D t: register(t4); 
... 
float w; 
float h; 
t.GetDimensions(w, h); 

然而,這將導致一個錯誤:

X4532: cannot map expression to pixel shader instruction set

似乎這個錯誤並沒有被記錄任何地方。我是否錯誤地使用了該功能?我應該使用不同的技術嗎?

我正在着色器模型4.0級別9_1,通過DirectX工作。

回答

2

如果函數在調用着色器階段中不可用,則通常會發生此錯誤。

Is there a different technique that I should use?

使用着色器常量用於紋理的寬度和高度。它可以將着色指令保存在着色器中,這也可能是更好的性能表現。

+0

謝謝Lucius,我正在將它們移到cbuffer。好的解決方案 – 2013-05-06 20:27:31