Installieren Sie OpenGL ES und kompilieren Sie den Code für Android

8

Ich habe gerade angefangen OpenGL ES auf Android zu lernen (mit diesem Buch ) und stieß auf ein Problem von Quelle Code aus Kapitel 5 zu bestehenden Methoden der Verwendung von jni in Android (eigentlich betrifft es auch einfach eine native GL-App ). Ich versuche, den nativen Code zu kompilieren, um die .so lib zu erhalten und sie weiter im .apk-Archiv zu verwenden. Eine Kompilierung ist jedoch nicht möglich, wenn bestimmte Bibliotheken nicht vorhanden sind (GLES / gl.h, EGL / egl.h, GLES / gl.h, GLES / glext.h).

Die Frage ist also, wie installiere ich diese Bibliotheken (AFAIU, OpenGL ES und EGL Installation) und kompiliere den einfachsten nativen Code? (Tutorials werden sehr bewundert).

Vielen Dank im Voraus.

EDIT: Ich habe das glbuffer Beispiel wie vorgeschlagen (leicht geänderte .mk Datei) versucht, aber immer noch keinen Erfolg. Compiler gibt mir das gleiche Ergebnis wie zuvor:

  

ndk-build

     

Kompilieren Sie den Daumen: egl & lt; = cube.c

     

/path/jni/cube.c:5:21: Fehler: GLES / gl.h: Keine solche Datei oder Verzeichnis // dieselbe Nachricht für glbuffer, wenn gl.h eingeschlossen wird

Hier ist der cube.c-Code:

%Vor%

Es ist schrecklich trivial und funktioniert noch nicht.

Android.mk:

%Vor%     
Denys S. 14.03.2011, 15:25
quelle

4 Antworten

17

Diese Bibliotheken werden von Android selbst bereitgestellt. Das Einrichten Ihres Projekts, um sie zu finden und Ihren JNI (nativen) Code korrekt zu kompilieren, kann jedoch abschreckend sein.

Ich empfehle, glbuffer als Startprojekt zu verwenden, da es dir eine GLSurfaceView bietet, auf die du dich beziehen kannst mit den richtigen Android-Bibliotheken.

Die Details der Verknüpfung mit den Android-Bibliotheken sind in jni/Android.mk in diesem Projekt enthalten, wenn Sie es selbst von Grund auf neu erstellen möchten.

Bearbeiten - anscheinend fehlt glbuffer jni/Application.mk . Erstelle es und lege es hinein:

%Vor%

Dann wird der ndk wissen, in die android-8-Plattform für Ihre Includes zu schauen. Sie können dies bei Bedarf zu anderen Versionen ändern.

    
Matthew Willis 14.03.2011, 15:48
quelle
5

Ich habe das NDK nach Instanzen der Header-Datei "EGL / egl.h" durchsucht. Dieses spezielle Beispiel wird auf Android-API-Ebene 15 kompiliert und ausgeführt, aber einige andere API-Ebenen haben keine Kopfzeile.

    
Matt Russell 14.06.2012 03:24
quelle
3

Ich habe gerade hinzugefügt

%Vor%

zu cube.c & amp; cubernerer.c

geändert

%Vor%

bis

%Vor%

Mein Android.mk:

%Vor%

Meine Anwendung.mk:

%Vor%

Und baute es auf android-ndk-r6

    
Tim 02.08.2011 13:35
quelle
-2

Sie haben den Dateinamen GLES / glext.h zweimal verwendet.

    
Immanuel Bierer 24.12.2013 00:43
quelle