下面的代碼導致錯誤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