-
16-09-2019 - |
题
float4x4 matInvViewProj;
float4 GetPointPosition(float2 Tex0)
{
float4 PosImageSpace;
PosImageSpace.xy = float2(Tex0*2-1);
PosImageSpace.z = tex2D(DepthTextureSampler,Tex0).r;
return mul(PosImageSpace,matInvViewProj);
}
这就是我的像素着色其中.为什么会有一个编译器的错误?我在汇编它 ps_3_0.
没有的 mul()
它编译。
解决方案
啊,我想这是有道理的。由于w组件可以不是初始化,穆尔()功能就会失败。
避免你可以初始化矢量如下:
float4 PosImageSpace = (float4)0;
我仍建议你尝试编制你的色器使用fxc在调试模式,因为你可以得到更好的错误的描述方式。你甚至可以设立一个自定义建立一步,可以让你右击。外汇文件和编写这没有必要编译整个方案/项目。
汇编的着色用fxc在调试配置:
fxc /Od /Zi /T fx_3_0 /Fo Directional_Lighting_Shader_Defaul.fxo Directional_Lighting_Shader_Defaul.fx
你可以找到fxc在C:\Program 文件\Microsoft可SDK\公用事业\bin
设立一个自定义建立一步Visual Studio 检查这样的可SDK 并且还 检查这个网站
还要检查 这篇文章在msdn 关于使用fxc.
其他提示
这是奇怪的:我加入这一行:
PosImageSpace.w = 0.0f;
现在它汇编。这就是它看起来如何现在:
float4x4 matInvViewProj;
float4 GetPointPosition(float2 Tex0)
{
float4 PosImageSpace;
PosImageSpace.xy = float2(Tex0*2-1);
PosImageSpace.z = tex2D(DepthTextureSampler,Tex0).r;
PosImageSpace.w = 0.0f;
return mul(PosImageSpace,matInvViewProj);
}
不隶属于 StackOverflow