OpenGL se bloquea al vincular el programa, LG Nexus 4

Tengo otro error de controlador de OpenGL ES. Esta vez estoy tratando de compilar las siguientes líneas:

precision mediump float; varying highp vec2 textureCoordinate; void main() { highp vec4 color = texture2D(input0, textureCoordinate); vec3 color3 = color.rgb; vec2 tc = (2.0 * textureCoordinate) - 1.0; float d = dot(tc, tc); vec2 lookup = vec2(d, color3.r); .. .. } 

Pero estoy consiguiendo después de la línea:

 GLES20.glLinkProgram(program); 

"Supongo que sucede porque LG nexus 4 utiliza GPU Adreno, y también se bloquea para mí con el código de error 14 en un accidente diferente – usar demasiadas macros.

Después de compilar el sombreado, utilizando glGetShaderiv obtener el estado de la compilación de sombreado. Me gusta:

 GLint compiled; glGetShaderiv(index, GL_COMPILE_STATUS, &compiled); //index is the shader value 

A continuación, si compilado se devuelve como cero, obtenga primero la longitud de información y, a continuación, el mensaje de error como sigue:

 GLint infoLen = 0; glGetShaderiv(index, GL_INFO_LOG_LENGTH, &infoLen); if(infoLen > 1) { char* infoLog = new char(infoLen); glGetShaderInfoLog(index, infoLen, NULL, infoLog); } 

Compruebe infoLog finalmente para ver el mensaje de error que regresó de la compilación de sombreado. Mensaje de error de segmentación en su mensaje original no da nada útil para resolver el problema.

Por lo que puedo ver de su extracto del código corto en su shader del fragmento usted no ha especificado la precisión del float . En ES 2.0 debe especificar explícitamente la precisión del float .

 precision mediump float; 

Por favor, lea sobre esto en las especificaciones , pág. 4.5.3 Calificadores de precisión por defecto . Shader puede funcionar sin especificar la precisión del float en ciertos controladores OpenGL ES y puede fallar al compilar en otros.

Sin embargo, se necesita código fuente completo para averiguar la causa exacta de su problema.

Te sugiero que comience a comentar las partes del código de sombreado hasta que comience a compilar correctamente. De esta manera se reducirá una línea problemática (creo que incluso más rápido que esperar respuesta aquí en SO).

  • Utilizar glVertexAttribPointer y glDrawElements para extraer de un buffer de vértice empaquetado
  • Cómo renderizar la imagen de la cámara YUV-NV21 de Android en el fondo en libgdx con OpenGLES 2.0 en tiempo real?
  • Shader para Android OpenGL ES
  • LibGDX - Shader trabajando en el escritorio pero no en Android
  • Pasar datos adicionales para fragmentar el shader a través de VBO - DynamicSpriteBatch
  • Vertex Buffer Objects (VBO) no funciona en Android 2.3.3, con GLES20
  • Aplicando textura a Cubo, textura diferente en cada cara de cubo
  • Android: TextView dañado usando .setShader ()
  • ¿Cómo acceder a otro vértice en un programa de sombreado de vértices en opengl es 2?
  • Creación de shaders OpenGL en NativeActivity
  • Intercambiar píxeles de MainTex con otras texturas a través de la superficie Shader (Unity)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.