Opengl glGetError()在调用GlenableVertexAttributeArray(<;int>;0xFFFFFF)后返回了以下错误代码:GL\u无效\u值

Opengl glGetError()在调用GlenableVertexAttributeArray(<;int>;0xFFFFFF)后返回了以下错误代码:GL\u无效\u值,opengl,Opengl,这是stacktrace com.jogamp.opengl.GLException: Thread[AWT-EventQueue-0,6,main] glGetError() returned the following error codes after a call to glEnableVertexAttribArray(<int> 0xFFFFFFFF): GL_INVALID_VALUE ( 1281 0x501), at com.jogamp.opengl.D

这是stacktrace

com.jogamp.opengl.GLException: Thread[AWT-EventQueue-0,6,main] glGetError() returned the following error codes after a call to glEnableVertexAttribArray(<int> 0xFFFFFFFF): GL_INVALID_VALUE ( 1281 0x501), 
    at com.jogamp.opengl.DebugGL4bc.writeGLError(DebugGL4bc.java:30672)
    at com.jogamp.opengl.DebugGL4bc.glEnableVertexAttribArray(DebugGL4bc.java:4921)
顶点着色器

#version 120

uniform mat4 uMVPMatrix;
attribute vec4 vPosition;

void main() {
    gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
}
#version 120

uniform vec4 vColor;

void main() {
    gl_FragColor = vColor;
}
片段着色器

#version 120

uniform mat4 uMVPMatrix;
attribute vec4 vPosition;

void main() {
    gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
}
#version 120

uniform vec4 vColor;

void main() {
    gl_FragColor = vColor;
}

在顶点着色器中,您不在任何地方使用
vPosition
属性,因此驱动程序在编译时很可能会对其进行优化。这意味着
glGetAttributeLocation
将不会返回有效值,这意味着
GlenableVertexAttributeArray
将失败。将顶点着色器更改为实际使用要声明的
uMVPMatrix
vPosition
变量,即:

uniform mat4 uMVPMatrix;
attribute vec4 vPosition;

void main() {
    gl_Position = uMVPMatrix * vPosition;
}

确保您确实为
uMVPMatrix
传入了一个值(不清楚您以后是否在代码中这样做)。

在顶点着色器中,您没有在任何地方使用
vPosition
属性,因此驱动程序在编译时很可能会对其进行优化。这意味着
glGetAttributeLocation
将不会返回有效值,这意味着
GlenableVertexAttributeArray
将失败。将顶点着色器更改为实际使用要声明的
uMVPMatrix
vPosition
变量,即:

uniform mat4 uMVPMatrix;
attribute vec4 vPosition;

void main() {
    gl_Position = uMVPMatrix * vPosition;
}
确保您确实为
uMVPMatrix
传递了一个值(不清楚您以后是否在代码中这样做)