OpenGL "Error de operación no válido" Después de glDrawElements función en el teléfono Android

No puedo ejecutar mi aplicación en mi teléfono, e I'v localizado el error, pero carecen de los conocimientos en la programación y en Inglés para repararlo. La ejecución de la aplicación en el emulador perfectamente, sin errores en el código ni en opengl. Sin embargo, en el teléfono todo va bien sin errores, pero no muestran elementos opengl que quiero dibujar. He añadido glGetError casi everythere en mi código, y encontré el error 1282 generado después de glDrawElements que es GL_INVALID_OPERATION .

GL_INVALID_OPERATION se genera si un nombre de objeto de búfer distinto de cero está enlazado a una matriz habilitada oa la matriz de elementos y el almacén de datos del objeto de búfer está asignado actualmente.

GL_INVALID_OPERATION se genera si glDrawElements se ejecuta entre la ejecución de glBegin y el glEnd correspondiente.

No tengo glBegin o glEnd en mi código, así que supongo que el problema está en mi indexbuffer. Abajo te presento todo lo que tengo con el indexbuffer.

 private ShortBuffer _indexBuffer; public void onDrawFrame(GL10 gl) { FramesPerSecond.StartCounter(); gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); gl.glVertexPointer(3, GL10.GL_FLOAT, 0, _vertexBuffer); gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[0]); gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY); gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, textureBuffer); for (int i = 1; i <= 10; i++) { gl.glLoadIdentity(); gl.glTranslatef(0.0f, -1f, -1.0f + -1.5f * i); gl.glRotatef(-_xAngle, 1f, 0f, 0f); gl.glRotatef(-_yAngle, 0f, 1f, 0f); gl.glDrawElements(GL10.GL_TRIANGLES, _nrOfVertices, GL10.GL_UNSIGNED_SHORT, _indexBuffer); Log.e("Warning", " error code " +gl.glGetError()); } 

Código de búfer en mi función de inicialización de objeto:

  short[] indeksai = new short[] { 0, 1, 3, 0, 2, 1, 0, 3, 2, 1, 2, 3, }; ByteBuffer ibb = ByteBuffer.allocateDirect(indeksai.length * 2); ibb.order(ByteOrder.nativeOrder()); _indexBuffer = ibb.asShortBuffer(); _indexBuffer.put(indeksai); 

Y eso es básicamente todo lo que he hecho con este buffer.

Sobre la función surfaceCreated >>

 public void onSurfaceCreated(GL10 gl, EGLConfig config) { Log.i(LOG_TAG, "onSurfaceCreated()"); gl.glMatrixMode(GL10.GL_PROJECTION); float ratio = _width / _height; gl.glOrthof(-1, 1, -1 / ratio, 1 / ratio, 0.01f, 100.0f); gl.glViewport(0, 0, (int) _width, (int) _height); gl.glMatrixMode(GL10.GL_MODELVIEW); gl.glEnable(GL10.GL_DEPTH_TEST); gl.glClearColor(0f, 0f, 0f, 1.0f); gl.glEnable(GL10.GL_CULL_FACE); gl.glFrontFace(GL10.GL_CCW); gl.glCullFace(GL10.GL_BACK); gl.glEnableClientState(GL10.GL_VERTEX_ARRAY); gl.glEnableClientState(GL10.GL_COLOR_ARRAY); initTriangle(gl, context); try { loadGLTexture(gl); } catch (IOException e) { Log.w(LOG_TAG, "Texture fail"); } gl.glEnable(GL10.GL_TEXTURE_2D); gl.glShadeModel(GL10.GL_SMOOTH); gl.glClearColor(0.0f, 0.0f, 0.0f, 0.5f); gl.glClearDepthf(1.0f); gl.glEnable(GL10.GL_DEPTH_TEST); gl.glDepthFunc(GL10.GL_LEQUAL); gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_NICEST); } 

Lo más probable es que esté habilitando GL_COLOR_ARRAY pero nunca configurando el glColorPointer . Trate de comentar el gl.glEnableClientState(GL10.GL_COLOR_ARRAY); línea.

  • Excepción de tiempo de ejecución al utilizar la configuración de Android (estoy siguiendo el curso de desarrollo de Android de udacity)
  • Cómo abrir PDF en android utilizando pdfview
  • Error: com.jayway.maven.plugins.android.generation2: android-maven-plugin: 3.6.0: generate-sources
  • Usando MediaWiki para tirar de texto de una página de Wikia pero vuelve en un lío grande hay una mejor manera que podría hacer esto para tirar de texto de cada sección?
  • Java (Android) convertir la fecha de SQLite a "x días atrás"
  • Hacer BufferedReader iniciar desde el medio de un archivo. Txt en lugar de el principio?
  • Cadena que contiene caracteres especiales convertidos a la representación de escape en Android - cómo evitar esto?
  • Actividad de referencia de retención de Singleton fugas de memoria?
  • Entrada duplicada: org / appcelerator / titanium / gen / bindings.json en el módulo Android personalizado
  • Calcular la diferencia entre dos veces android
  • Tengo un archivo keystore, ¿cómo puedo proporcionar keyManagers a sslContext en la aplicación de Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.