Android NDK Native OpenGL ES: implementierte API
Ich arbeite an der Umsetzung einer OpenGL ES 2.0 vollständig in C++ für Android.
Derzeit ist unser Programm läuft ohne JNI oder eine java-Klasse in das Projekt, nutzen statt nur NativeActivity.
Fokussierung auf die Anwendung rendering-Teil selbst, haben wir eine einfache Methode:
renderWorld()
{ GLfloat vVertices[] = { 0.0f, 0.5f, 0.0f,
-0.5f, -0.5f, 0.0f,
0.5f, -0.5f, 0.0f };
glClear ( GL_COLOR_BUFFER_BIT );
glVertexAttribPointer ( 0, 3, GL_FLOAT, GL_FALSE, 0, vVertices );
glEnableVertexAttribArray ( 0 );
glDrawArrays (GL_TRIANGLES, 0, 3 );
}
In Android.mk war enthalten:
LOCAL_LDLIBS := -landroid -llog -lEGL -lGLESv1_CM -lOpenSLES -lGLESv2
Und in AndroidManifest.xml informiert:
<uses-feature android:glEsVersion="0x00020000"></uses-feature>
So, das Programm debuggt und kompiliert, ohne Probleme. Wenn Sie auf ausführen, kommt die Meldung:
error libEGL called unimplemented OpenGL ES API
Des Forums gibt einen Vorschlag praktikabel für java - Android: GLES20: Called unimplemented OpenGL ES API , einschließlich der code den Befehl setEGLContextClientVersion:
GLSurfaceView surfaceView = new GLSurfaceView(this);
surfaceView.setEGLContextClientVersion(2);
Jedoch die setEGLContextClientVersion ist eine Art wrapper-Methode bedeutete für java.
Den setEGLContextClientVersion gehört nicht auf native OpenGL ES und kann nicht sein anwendbar für native C++ OGLES Entwicklung.
Deshalb verwendete ich statt:
const EGLint attribList[] = {EGL_CONTEXT_CLIENT_VERSION, 2,EGL_NONE};
mContext = eglCreateContext(mDisplay, lConfig, EGL_NO_CONTEXT,attribList);
Aber der Fehler ist nicht verschwunden noch.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie mit echten Gerät (welcher?) oder Sie sind auf emulator (das nicht unterstützen OGL ES2)? Auch ich bin mir nicht sicher, ob die Verknüpfung GLESv1_CM und GLESv2 in der gleichen app ist eine gute Idee. Wenn Sie möchten, OpenGL ES 2.0, dann nur Links zu GLESv2.
Wie haben Sie zuerst entsprechend formatiert EGL Kontext? Haben Sie verwendet, EGL Attribut EGL_OPENGL_ES2_BIT wie: