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

4

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

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

然而,这导致了一个错误:

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

这个错误似乎没有被记录在任何地方。我是否在错误地使用该函数?是否应该使用不同的技术?

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

1个回答

2

如果调用的着色器阶段中不存在某个函数,则通常会出现此错误。

是否有其他技术可以使用?

使用着色器常量来存储纹理的宽度和高度。这将节省着色器中的指令,从性能方面考虑也可能更好。


谢谢Lucius,我将它们移动到缓冲区中。好的解决方案。 - Justin R.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接