Vertex Shader no puede compilar. No puedo encontrar el error

EDITAR:

Parece que el error fue, que no se me permite compilar el shader en un hilo separado? Desde que he estado presionando el objeto de carga en un entorno de subprocesos, el mensaje de error surgió. Simplemente no creo que podría ser la razón de ello.


Mi sombreador vértice actual falla al compilar por alguna razón. El mensaje de error que estoy recibiendo no existe, y no puedo encontrar el error.

uniform mat4 u_MVPMatrix; uniform mat4 u_MVMatrix; uniform vec3 u_CameraPos; attribute vec4 a_Position; attribute vec4 a_Color; attribute vec3 a_Normal; varying vec3 v_Position; varying vec4 v_Color; varying vec3 v_Normal; varying vec3 v_CameraPosition; varying vec4 v_Ambient; void main() { v_Position = vec3(u_MVMatrix * a_Position); v_Color = a_Color; v_Normal = vec3(u_MVMatrix * vec4(a_Normal, 0.0)); //v_CameraPosition = vec3(u_MVMatrix * vec4(u_CameraPos, 0.0)); // taken out to debug v_CameraPosition = u_CameraPos; gl_Position = u_MVPMatrix * a_Position; } 

El fragmento shader para este es:

 precision mediump float; uniform vec3 u_LightPos; uniform vec4 u_Light; uniform vec4 u_Ambient; uniform vec3 u_LightDirection; uniform vec3 u_CameraPos; varying vec4 v_Ambient; varying vec3 v_Position; varying vec4 v_Color; varying vec3 v_Normal; varying vec3 v_CameraPosition; // The entry point for our fragment shader. void main() { float distance = length(u_LightPos - v_Position); vec3 lightVector = normalize(u_LightPos - v_Position); float diffuse = max(dot(v_Normal, lightVector), 0.1); diffuse = diffuse * (1.0 / (1.0 + (0.25 * distance * distance))); // specular lighting removed due to debugging gl_FragColor = v_Color * (u_Ambient + (diffuse * u_Light)); } 

"Trying" para obtener un mensaje de error:

 Log.d(TAG, "Compilation -> " + GLES20.glGetShaderInfoLog(iShader)); 

Devuelve una cadena vacía del método, así como

 Log.e(TAG, "Vertex Shader Failed -> " + GLES20.glGetError()); 

Está regresando simplemente 0.

Estoy desarrollando para OpenGL ES 2.0 para Android, si hay alguna restricción para Android que no conozco?

¡Gracias por cualquier ayuda!

Los contextos OpenGL sólo funcionan por subproceso, por lo que son correctos. Si desea crear un subproceso de carga de fondo, no sólo debe crear un nuevo contexto en ese subproceso, sino también asegurarse de que comparte recursos (el tercer parámetro en eglCreateContext ). Tenga en cuenta que los recursos de contexto de uso compartido pueden no funcionar en algunos dispositivos (antiguos).

  • Vertex Buffer Objects (VBO) no funciona en Android 2.3.3, con GLES20
  • Detectar si OpenGl ES 2.0 está disponible o no
  • Algunos tutoriales para OpenGL ES 2 en Android con NDK?
  • Grabación de marcos generados por Open GL ES en android
  • ¿Es posible deformar la imagen subyacente con OpenGL ES 2.0?
  • Compartir el contexto EGL2.0 entre 2 GLSurfaceViews causó EGL_BAD_ACCESS en las tabletas Android
  • Parpadeo de la pantalla de OpenGL ES 2.0
  • Error al intentar obtener Alraedy creado Surface y recibir EGLNativeWindowType ya conectado a otro error de API
  • Android OpenGl 2.0 ES fuerza el reinicio del dispositivo
  • ¿Por qué mi programa de shader openGL para puntos tiene anillos de artefactos?
  • Modificación de la salida de la cámara con SurfaceTexture y OpenGL
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.