2011-01-03 14 views
8

Estoy modificando la versión de la versión de Android del ejemplo de textura 2d de la guía de programación OpenGl ES2.0 para cambiar el sombreador de fragmentos. esto está escrito en Java puro y no usa el NDK.glGetShaderInfoLog devuelve cadena vacía (android)

El ejemplo de vainilla funciona bien en mi teléfono, pero cuando cambio el código de sombreado, ya no funciona. Esto se debe a que mi shader modificado no compila (obviamente), pero no puedo encontrar la causa del problema, ya que glGetShaderInfoLog devuelve una cadena vacía.

He hecho una búsqueda sobre este tema, y ​​al parecer, a partir del 22 de julio, era un problema conocido, pero me preguntaba qué formas hay para evitarlo. Una publicación que encontré decía que habían escrito un contenedor NDK para la función, pero como soy nuevo en el desarrollo de Android, realmente no sé cómo hacer esto.

Respuesta

6

Estás sufriendo de a bug. Trabajé usando el old GL ES 2.0 bindings para obtener un funcionamiento glGetShaderInfoLog. De esta manera:

import com.badlogic.gdx.backends.android.AndroidGL20; 
... 
AndroidGL20 gl2 = new AndroidGL20(); 
Log.e(TAG, gl2.glGetShaderInfoLog(shader)); 

que todavía utilizan la biblioteca GLES20 envoltorio estándar para todo lo demás, así que esto era fácil de caer en mi base de código. Los dos envoltorios aparentemente pueden coexistir sin ningún problema.

2

Solo en caso de que alguien encuentre esta pregunta, ya que han encontrado el mismo problema, la única forma que he encontrado para "resolverlo" es compilar el sombreador con otra aplicación (como Rendermonkey). No es ideal, ¡pero me llevó más lejos en mi proyecto!

1

Tuve el mismo problema.

  1. Asegúrese de tener lo siguiente en ApplicationManufest.xml:

    < utiliza-Androide androide glEsVersion = "0x00020000": required = "true" />

  2. Llamar a esto después de inicializar un GLSurfaceView

glSurfaceView.SetEGLContextClientVersion (2);

Cuestiones relacionadas