GLSL顶点着色器编译错误

问题描述:

这是我的以下错误,它是GLSL中的错误#160。GLSL顶点着色器编译错误

#version 330 core 

layout (location = 0) in vec3 position; 
out vec4 pos; 

uniform mat4 model; 
uniform mat4 view; 
uniform mat4 projection; 

void main() 
{ 
    gl_Position = projection * view * model * vec4(position, 1.0f); 
    pos = position; 
} 

这是试图编译此GLSL程序时创建的错误。

ERROR: Vertex Shader Program Compilation Failed! Vertex shader failed to compile with the following errors: 
ERROR: 0:13: error(#160) Cannot convert from: "in highp 3-component vector of vec3" to: "default out highp 4-component vector of vec4" 
ERROR: error(#273) 1 compilation errors. No code generated 

我没有关于调试GLSL的知识,所以如果有人能够帮助它将非常感激。

+0

修复编译错误不是“调试”。 –

那么,你的错误很明显。由于您将position指定为pos,并且posvec4,而positionvec3,并且此处没有隐式转换,编译器会抱怨。要解决这个问题,只需创建一个vec4,例如position,例如

pos = vec4(position, 1.0f); 

然而,你应该好好想想为什么你需要为你的位置vec4下来的管道,或者是否有posvec3就足够与否。

+0

我是有史以来最盲目的人......感谢您为我指出这一点,我非常关注gl_Position系列。 –

+0

@AaronSharp别担心,不时发生在每个人身上;) –