GLSL Shader没有编译

时间:2015-12-19 14:41:03

标签: opengl glsl

我正在制作一款游戏,我正在编写一个着色器来反映来自对象的光线,并且我不断收到错误消息:

  

错误:0:25:' - '不适用于' vec3'和' vec4'

fragmentShader文件:

vec3 unitVectorToCamera = normalize(toCameraVector); 

vec3 lightDirection = -unitLightVector; 

vertexShader文件:

toCameraVector = (inverse(viewMatrix) * vec4(0.0, 0.0, 0.0, 1.0)).xyz - worldPosition;

版本:

#version 400 core

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:3)

(inverse(viewMatrix) * vec4(0.0, 0.0, 0.0, 1.0)).xyz

返回vec3(x,y,z) - 并尝试减去worldPosition,类型为vec4。

您可以将其更改为:

toCameraVector = (inverse(viewMatrix) * vec4(0.0, 0.0, 0.0, 1.0)).xyz - worldPosition.xyz;

答案 1 :(得分:0)

toCameraVector = (inverse(viewMatrix) * vec4(0.0, 0.0, 0.0, 1.0)).xyz - worldPosition;

worldPosition是vec4,vec4(0.0, 0.0, 0.0, 1.0)).xyz是vec3。不允许从vec3中减去vec4。