0
我正在通过使用directX的Pixel Shader 5.0教程。我做得很好,直到我到了第四个教训,其中有我创建一个PixelShader.hlsl文件用下面的代码:HLSL像素着色器5.0 NdotL照明示例
cbuffer ConstantBuffer : register(b0)
{
matrix World;
matrix View;
matrix Proj;
float4 vLightDir[2];
float4 vLightColor[2];
float4 vOutputColor;
}
struct PS_INPUT
{
float4 Pos : SV_POSITION;
float3 Norm : TEXCOORD0;
};
//--------------------------------------------------------------------------------------
// Pixel Shader
//--------------------------------------------------------------------------------------
float4 main(PS_INPUT input) : SV_Target
{
float4 finalColor = 0;
//do NdotL lighting for 2 lights
for(int i=0; i<2; i=""
{
finalColor += "saturate"(dot=""((float3)vLightDir=""[i=""],input.Norm="") * vLightColor=""[i=""
}
finalColor.a = "1"
return="" finalColor="";
}
for循环在文件的结尾有我困惑。 Int i正被初始化为一个常量字符串,并且没有右括号。 同样,for循环内的代码也不正确。 float4结构似乎有一个字符串“饱和”被追加到它,这也是一个函数?一个函数没有适当的闭括号,没有分号也不会少。
它看起来像样本代码中有一些拼写错误,我努力修复它们。有什么想法应该写在这里?
当我尝试编译在VS2012的代码,我收到以下错误:错误X3017:不能隐式地从“常量字符串”到“廉政”
转换我试图将其更改为固定的循环代码
for(int i=0, i<2, i++)
,我得到的代码不同的误差范围内的for循环:错误X3022:标量,矢量或矩阵预期提前
感谢您的帮助