Opengl glGetError()在调用GlenableVertexAttributeArray(<;int>;0xFFFFFF)后返回了以下错误代码:GL\u无效\u值
这是stacktraceOpengl 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
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
传递了一个值(不清楚您以后是否在代码中这样做)