Ich versuche, das Canvas-basierte Rendering-System zu ersetzen, die ich bereits mit der schnelleren opengl-es-Oberfläche habe, aber ich kann nicht scheinen, einen OpenGL-Renderer zu erhalten so, dass es als 2d-Feld wirkt, anstatt eine perspektivische Ansicht.Mit OpenGL Canvas ersetzen - Android
Meine aktuellen Code für den Renderer sieht wie folgt aus:
@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);
}
Wie würde ich Setup der Renderer, so dass die Transformation mit den Pixel auf dem Bildschirm übereinstimmen übersetzen würde? (Wenn also 5 nach rechts verschoben wird, werden 5 Pixel verschoben)
Warum nicht einfach eine GL-Instanz an den Canvas-Konstruktor übergeben. http://developer.android.com/reference/android/graphics/Canvas.html –
Wäre das OpenGL Geschwindigkeitsvorteile gegenüber dem grundlegenden Canvas beim Zeichnen von Bitmaps? – GuyNoir
Verwenden Sie Canvas nicht dafür. Es funktioniert nicht, obwohl es dokumentiert ist. Laut den Vorträgen im IRC hat der Entwickler von Canvas das Programm bereits aus der API für zukünftige Versionen entfernt. – Moncader