Android Opengl ES: GLUtils.glTexImage2D causando GL_INVALID_ENUM
Estoy intentando hacer un cuadrado textured simple en Android 2.2 usando GLSurfaceView
. Estoy cargando una imagen BMP (128×128) con BitmapFactory.decodeResource()
– esto parece funcionar. Pero siempre que intento poner este mapa de bits en una textura de OpenGL usando GLUtils.glTexImage2D
consigo un error de OpenGL: glGetError()
devuelve 1280, GL_INVALID_ENUM
. ¿Qué estoy haciendo mal? Este es el código para mi Renderer:
public class MyRenderer implements GLSurfaceView.Renderer { Context context; int texId; public MyRenderer(Context c) { this.context = c; } @Override public void onSurfaceCreated(GL10 gl, EGLConfig config) { gl.glEnable(GL10.GL_TEXTURE_2D); this.texId = loadTexture(gl); } int loadTexture(GL10 gl) { int[] tmp = new int[1]; gl.glGenTextures(1, tmp, 0); int id = tmp[0]; Bitmap bmp = BitmapFactory.decodeResource(this.context.getResources(), R.drawable.myimage); gl.glGetError(); GLUtils.texImage2D(id, 0, bmp, 0); int err = gl.glGetError(); if (err != 0) { // err == 1280, prints "invalid enum": System.err.println(GLU.gluErrorString(err)); } return id; } @Override public void onSurfaceChanged(GL10 gl, int width, int height) { gl.glViewport(0, 0, width, height); gl.glMatrixMode(GL10.GL_PROJECTION); gl.glLoadIdentity(); GLU.gluOrtho2D(gl, 0, width, height, 0); gl.glMatrixMode(GL10.GL_MODELVIEW); gl.glLoadIdentity(); } @Override public void onDrawFrame(GL10 gl) { // ... } }
- La cámara aérea más baja de la CPU a GPU enfoque en Android
- Conceptos básicos de NDK y OpenGL en android
- OpenGl render directamente a mapa de bits (sin ninguna vista)
- Problema de OpenGL en Android
- Cómo utilizar GLM en la aplicación Android NDK
- Por qué las funciones de OpenGL ES no se pueden llamar desde otro subproceso
- Cuando se utiliza GLES20.glReadPixels en android, los datos devueltos por él no son exactamente iguales con la vista previa en vivo
- El ejemplo de Android openGL da una pantalla en blanco
- Cómo utilizar OpenGL ES 2.0 en Android SDK (no NDK)?
- Cómo cargar un objeto 3d en Android?
- Tutorial para Android OpenGL ES
- Juego gratuito de asignación
- Problema dibujo de una esfera en OPENGL ES
Probablemente debería ser algo como:
gl.glBindTexture(GL10.GL_TEXTURE_2D, id); GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bmp, 0);
- ¿Cómo descargar el archivo con el servicio en android?
- Interceptar la intención de ACTION_CALL en HTC sense