Android 解决a";程序对象不完整。”;opengl错误
我目前正在Android应用程序上编程 这是我的密码:Android 解决a";程序对象不完整。”;opengl错误,android,opengl-es-2.0,Android,Opengl Es 2.0,我目前正在Android应用程序上编程 这是我的密码: program = GLES20.glCreateProgram(); System.out.println("Program: " + program); GLES20.glAttachShader(program, vertexShader); CustomRenderer.checkGlError("AttachingVertex"); GLES20.glAttachShader(program, fragmentShader)
program = GLES20.glCreateProgram();
System.out.println("Program: " + program);
GLES20.glAttachShader(program, vertexShader);
CustomRenderer.checkGlError("AttachingVertex");
GLES20.glAttachShader(program, fragmentShader);
CustomRenderer.checkGlError("AttachingFragment");
GLES20.glLinkProgram(program);
CustomRenderer.checkGlError("LinkProgram");
System.out.println("Is Program: " + GLES20.glIsProgram(program));
GLES20.glValidateProgram(program);
System.out.println("Error log: " + GLES20.glGetProgramInfoLog(program));
GLES20.glUseProgram(program);
CustomRenderer.checkGlError("UseProgram");
这是输出:
11-20 14:02:01.442: I/System.out(6370): Vertex: 1
11-20 14:02:01.442: I/System.out(6370): Is Shader: true
11-20 14:02:01.447: I/System.out(6370): Fragment: 2
11-20 14:02:01.447: I/System.out(6370): Is Shader: true
11-20 14:02:01.447: I/System.out(6370): Program: 3
11-20 14:02:01.447: I/System.out(6370): Is Program: true
11-20 14:02:01.447: I/System.out(6370): Error log: The program object is incomplete.
11-20 14:02:01.447: I/System.out(6370): UseProgram: glError 1282
您还可以看到我对着色器所做的附加检查,它们似乎都在编译。此错误消息的答案是着色器没有编译!尽管“是”着色器并且具有id,但它们没有编译
检查着色器是否使用
GLES20.glGetShaderInfoLog
方法编译。这将告诉您出了什么问题,您必须修复它。问题的一部分是您认为glIs\uuuuuuuuuu(…)
函数可以告诉您任何有关OpenGL对象有效性的信息。事实并非如此,这只是告诉您名称(GLuint
handle)是否与该类型的对象关联。此关联在您第一次将名称绑定到某个对象时发生(例如,glGenTextures(…)
将返回一个名称,但该名称实际上不是一个纹理,直到您调用glBindTexture(GL\u texture\u 2D,name)
)。即使如此,glIsTexture(…)
仍将返回GL\u TRUE
,即使您从未对该纹理执行过任何操作,只需将其绑定一次。