HLSL:在像素着色器中获取纹理尺寸

时间:2013-05-06 17:12:39

标签: graphics directx hlsl pixel-shader

我有一个纹理,我需要知道它在像素着色器中的尺寸。这似乎是GetDimensions的工作。这是代码:

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

但是,这会导致错误:

  

X4532:无法将表达式映射到像素着色器指令集

此错误似乎未在任何地方记录。我错误地使用了这个功能吗?我应该使用不同的技术吗?

我正在通过DirectX在shader model 4.0 level 9_1中工作。

1 个答案:

答案 0 :(得分:2)

如果函数在调用着色器阶段不可用,则通常会发生此错误。

  

我应该使用不同的技术吗?

对纹理宽度和高度使用着色器常量。它可以在着色器中保存指令,这也可能是性能更好的。