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的知识,所以如果有人能够帮助它将非常感激。
答
那么,你的错误很明显。由于您将position
指定为pos
,并且pos
为vec4
,而position
为vec3
,并且此处没有隐式转换,编译器会抱怨。要解决这个问题,只需创建一个vec4
,例如position
,例如
pos = vec4(position, 1.0f);
然而,你应该好好想想为什么你需要为你的位置vec4
下来的管道,或者是否有pos
是vec3
就足够与否。
+0
我是有史以来最盲目的人......感谢您为我指出这一点,我非常关注gl_Position系列。 –
+0
@AaronSharp别担心,不时发生在每个人身上;) –
修复编译错误不是“调试”。 –