Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Uso de OpenGL para reemplazar Canvas – Android

Estoy tratando de reemplazar el sistema de renderizado basado en lienzo que ya tengo con la superficie de opengl-es más rápida, sin embargo, no puedo conseguir un renderizador openGL para conformar de tal manera que actúa como 2d campo, en lugar de Una vista en perspectiva.

Mi código actual para el procesador se ve así:

@Override public void onSurfaceChanged(GL10 gl, int width, int height) { gl.glViewport(0, 0, width, height); gl.glMatrixMode(GL10.GL_PROJECTION); gl.glLoadIdentity(); gl.glOrthof(0.0f, width, 0.0f, height, 0.0f, 1.0f); gl.glShadeModel(GL10.GL_FLAT); gl.glEnable(GL10.GL_BLEND); gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA); gl.glColor4x(0x10000, 0x10000, 0x10000, 0x10000); gl.glEnable(GL10.GL_TEXTURE_2D); } @Override public void onSurfaceCreated(GL10 gl, EGLConfig config) { gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_FASTEST); gl.glClearColor(0.5f, 0.5f, 0.5f, 1); gl.glShadeModel(GL10.GL_FLAT); gl.glDisable(GL10.GL_DEPTH_TEST); gl.glEnable(GL10.GL_TEXTURE_2D); gl.glDisable(GL10.GL_DITHER); gl.glDisable(GL10.GL_LIGHTING); gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); } 

¿Cómo configurar el procesador para que la transformación traducir coincidiría con los píxeles en la pantalla? (Lo que traducir 5 a la derecha lo movería 5 píxeles)

One Solution collect form web for “Uso de OpenGL para reemplazar Canvas – Android”

Tenga en cuenta que en openGL la coordenada Y se invierte. De lo contrario todo es lo mismo.
En cuanto a las banderas correctas, te recomiendo que echa un vistazo a la isla de código abierto de réplica de juegos Android: http://code.google.com/p/replicaisland/

Esto es lo que uso en mi propio código:

 public void onSurfaceChanged(GL10 gl, int width, int height) { mViewWidth = width; mViewHeight = height; gl.glViewport(0, 0, mViewWidth, mViewHeight); gl.glLoadIdentity(); GLU.gluOrtho2D(gl, 0, mViewWidth, mViewHeight, 0); } public void onSurfaceCreated(GL10 gl, EGLConfig config) { gl.glClearColor(0.5f, 0.5f, 0.5f, 1); gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_FASTEST); gl.glShadeModel(GL10.GL_FLAT); gl.glDisable(GL10.GL_DEPTH_TEST); gl.glEnable(GL10.GL_BLEND); gl.glBlendFunc(GL10.GL_ONE, GL10.GL_ONE_MINUS_SRC_ALPHA); gl.glViewport(0, 0, mViewWidth, mViewHeight); gl.glMatrixMode(GL10.GL_PROJECTION); gl.glLoadIdentity(); gl.glEnable(GL10.GL_BLEND); gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA); gl.glShadeModel(GL10.GL_FLAT); gl.glEnable(GL10.GL_TEXTURE_2D); GLU.gluOrtho2D(gl, 0, mViewWidth, mViewHeight, 0); } 

Donde mViewWidth y mViewHeight son del tamaño de la pantalla.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.