Sto tentando di sostituire il sistema di rendering basato su Canvas che ho già con la superficie più veloce degli opengl, tuttavia, non riesco a ottenere un renderer openGL conforme a tale in modo che agisca come un campo 2D, piuttosto che in una vista prospettica.Uso di OpenGL per sostituire Canvas - Android
mio codice corrente per il renderer si presenta come segue:
@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);
}
Come faccio a impostare il renderer in modo che la trasformazione di tradurre sarebbe partita con i pixel sullo schermo? (quindi la traslazione di 5 a destra lo sposterebbe di 5 pixel)
Perché non utilizzare semplicemente passare un'istanza GL al costruttore Canvas. http://developer.android.com/reference/android/graphics/Canvas.html –
Ciò manterrebbe i vantaggi della velocità di openGL sulla tela di base nel disegno di bitmap? – GuyNoir
Non usare Canvas per questo. Non funziona anche se è documentato. Inoltre, secondo i talk in IRC, lo sviluppatore di Canvas l'ha già rimosso dall'API per le versioni future. – Moncader