下面的代码导致错误GLSL:左值赋值太复杂左值赋值太复杂
for(int i = 0; i < 4; i++)
{
if(Lgt.lights[i].position.w == 0.0)
{
LightDir[i] = normalize(vec3(Lgt.lights[i].position));
ViewDir[i] = normalize(cameraWorldPosition - worldPosition);
}
else
{
LightDir[i] = normalize(vec3(Lgt.lights[i].position) - worldPosition);
ViewDir[i] = normalize(cameraWorldPosition - worldPosition);
}
}
但在其他着色器程序的代码相同的一块工作正常。当代码不一样,如果声明包含,例如
for(int i = 0; i < 4; i++)
{
LightDir[i] = normalize(vec3(Lgt.lights[i].position) - worldPosition);
ViewDir[i] = normalize(cameraWorldPosition - worldPosition);
}
一切正常,但是当我用乘法:
for(int i = 0; i < 4; i++)
{
LightDir[i] = LocalMat * normalize(vec3(Lgt.lights[i].position) - worldPosition);
ViewDir[i] = LocalMat * normalize(cameraWorldPosition - worldPosition);
}
我再次得到这个错误。任何人都可以告诉发生了什么事?
什么驱动程序版本,什么GPU? –
nvlddmkm 8.17.13.142(ForceWare 301.42)/ Win7,NVIDIA GeForce GTX 560 Ti – Irbis