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

Graphics HLSL:在像素着色器中获取纹理尺寸,graphics,directx,hlsl,pixel-shader,Graphics,Directx,Hlsl,Pixel Shader,我有一个纹理,我需要知道它在像素着色器中的尺寸。这似乎是我的工作。代码如下: Texture2D t: register(t4); ... float w; float h; t.GetDimensions(w, h); 但是,这会导致一个错误: X4532:无法将表达式映射到像素着色器指令集 这个错误似乎没有记录在任何地方。我是否错误地使用了该功能?我应该使用不同的技术吗 我通过DirectX在shader model 4.0 level 9_1中工作 如果调用着色器阶段中没有可用的函数,则

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

Texture2D t: register(t4);
...
float w;
float h;
t.GetDimensions(w, h);
但是,这会导致一个错误:

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

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


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

如果调用着色器阶段中没有可用的函数,则通常会发生此错误

我应该使用不同的技术吗


对纹理宽度和高度使用着色器常量。它将指令保存在着色器中,从性能上看,这可能会更好。

谢谢Lucius,我将这些指令移到cbuffer中。很好的解决方案。