*** Problematic Vertex shader source code *** #version 130 #define lowp #define mediump #define highp #line 1 layout(location=0)in vec3 aPos; layout(location=1)in vec3 aColor; layout(location=2)in vec2 aTexCord; layout(location=3)in float testin; flat out int testrun; out vec3 ourColor; out vec2 TexCord; void main() { gl_Position=vec4(aPos.x,aPos.y,aPos.z,1.0); ourColor=aColor; testrun=int(testin); TexCord=aTexCord; } ***
时间: 2024-03-01 14:55:17 浏览: 289
这段顶点着色器源代码看起来没有语法错误,但是有几个问题:
1. 版本号过低:该代码使用的是OpenGL 2.0的版本号 #version 130,这个版本是比较古老的版本,目前使用的OpenGL版本一般都比这个高。建议将版本号改为 #version 330 或更高版本。
2. 宏定义无效:在顶点着色器中,您通常不需要使用 #define 来定义着色器中使用的变量类型。如果您需要使用精度修饰符,可以直接使用 lowp、mediump、highp 这些关键字。
3. flat 关键字错误:flat 关键字只能用于输出变量,不能用于输入变量。在这个例子中,您需要将 flat 关键字从 testin 变量中移除。
4. testin 变量没有定义:在这个例子中,testin 变量没有在顶点着色器中被定义。请确保您的 code 中定义了该变量。
下面是一个改进后的代码示例:
```
#version 330 core
layout(location=0)in vec3 aPos;
layout(location=1)in vec3 aColor;
layout(location=2)in vec2 aTexCord;
layout(location=3)in float testin;
out vec3 ourColor;
out vec2 TexCord;
flat out int testrun;
void main() {
gl_Position = vec4(aPos, 1.0);
ourColor = aColor;
testrun = int(testin);
TexCord = aTexCord;
}
```
我希望这可以帮助您解决问题。
阅读全文