Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 解决a";程序对象不完整。”;opengl错误_Android_Opengl Es 2.0 - Fatal编程技术网

Android 解决a";程序对象不完整。”;opengl错误

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)

我目前正在Android应用程序上编程

这是我的密码:

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
,即使您从未对该纹理执行过任何操作,只需将其绑定一次。