2013-05-06 118 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

相关问题