2012-03-26 9 views
4

Ich schreibe einige Android-Code in Vorbereitung für eine grafikintensive App, die ich entwickeln möchte. Ich habe seit 2004 kein OpenGL mehr gemacht. Ich bin über http://www.opengl.org/wiki/Vertex_Array_Object gestolpert und mehrere Quellen für die PC-Plattform behaupten, dass die Verwendung von Vertex-Array-Objekten der beste Weg zum Rendern ist.Android Vertex Array-Objekte?

Meine Zielplattform ist ein Motorola Atrix 2 Smartphone mit Android 2.3.

Ich kann nicht scheinen, ein Einschließen für eine Funktion entsprechend GL_OES_vertex_array_object zu finden. Ich möchte Funktionen ähnlich wie glGenVertexArraysOES aufrufen.

Wie verwende ich VAOs in Android?

Mein aktueller umfasst sind

import java.nio.Buffer; 
import java.nio.ByteBuffer; 
import java.nio.ByteOrder; 
import java.nio.CharBuffer; 
import java.nio.FloatBuffer; 
import java.nio.IntBuffer; 

import javax.microedition.khronos.opengles.GL10; 
import javax.microedition.khronos.opengles.GL11; 

Antwort

4

VAOs sind ziemlich neu und nicht in OpenGL | ES 1.0 oder 1.1 enthalten (nicht zu verwechseln mit Buffer Objects, oder wie sie manchmal VBOs genannt werden). Sie müssen OpenGL | ES 2.0 importieren und verwenden, und dadurch müssen Sie einige Änderungen an Ihrem Grafikcode vornehmen, um über Shader anstelle von glVertexPointer und ähnlichen Methoden zu zeichnen. Von der Optik her gibt es keine GL20Ext Klasse oder ähnliches in Android eingebaut, ich würde im Web nach Bindungen suchen oder sie selbst mit dem NDK schreiben.

1

Auf einigen Geräten die VAO Erweiterung nicht implementiert. Überprüfen Sie zunächst die OpenGL ES Version mit

gl.glGetString(GL10.GL_VERSION); 

Dann überprüfen, ob die Erweiterung mit

gl.glGetString(GL10.GL_EXTENSIONS); 

availbale ist, sollte es enthalten: GL_OES_vertex_array_object

Für weitere Informationen über Erweiterungen: OpenGL extensions available on different Android devices

Für Weitere Informationen über VAOs auf Android-Überprüfung: OES_vertex_array_object and client state

Bearbeiten: Ändern Sie die Antwort, um die Frage richtig zu beantworten. Danke für den Kommentar.

+0

Er fragt VAO, nicht VBO. –

+0

Oh, richtig. Es tut uns leid. Zumindest gilt das Verlängerungsmaterial immer noch hier. – Moss