Je tente de remplacer le système de rendu basé sur le canevas que j'ai déjà par la surface d'ouverture plus rapide, cependant, je n'arrive pas à obtenir un rendu openGL pour se conformer dans un tel manière qu'il agit comme champ 2d, plutôt que d'une vue en perspective.Utilisation d'OpenGL pour remplacer Canvas - Android
Mon code actuel pour le moteur de rendu se présente comme suit:
@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);
}
Comment puis-je configurer le moteur de rendu pour que la transformation translate correspondrait avec les pixels sur l'écran? (donc translater 5 vers la droite le déplacerait de 5 pixels)
Pourquoi ne pas simplement passer une instance GL au constructeur Canvas. http://developer.android.com/reference/android/graphics/Canvas.html –
Est-ce que cela conserverait les avantages de vitesse d'openGL sur le canevas de base dans le dessin Bitmaps? – GuyNoir
N'utilisez pas Canvas pour cela. Cela ne fonctionne pas même si c'est documenté. En outre, selon les discussions en IRC, le développeur de Canvas l'a déjà retiré de l'API pour les futures versions. – Moncader