8
votes

Installez OpenGL ES et Compiler le code pour Android

Je viens de commencer à apprendre OpenGL ES sur Android (en utilisant Ce livre ) et est tombé sur une question d'adopter source code du chapitre 5 des méthodes existantes d'utilisation de JNI dans Android (En fait, cela concerne également simplement une application Native GL). J'essaie de compiler le code natif pour obtenir le .so lib et l'utiliser plus loin dans l'archive .apk. Mais la compilation n'est pas possible si certaines libs ne sont pas présentes (qui sont des gants / GL.H, EGL / EGL.H, GLEES / GL.H, GLEES / GLEXT.H).

La question est donc de savoir comment installer ces Libs (Afaiu, OpenGL ES et EGL) et compiler le code natif le plus trivial? (Les tutoriels sont hautement admiré). P>

Merci d'avance. p>

Edit: J'ai essayé le GLBUFFER EXEMPLE Comme a été suggéré (fichier .MK légèrement modifié), mais toujours pas de succès. Compilateur me donne le même résultat qu'avant: p>

ndk-build p>

Compiler le pouce: EGL

/path/jni/cube.c:5:21: Erreur: GLEES / GL.H: Aucun fichier ou répertoire de ce type /// même message pour Glbuffer lorsque GL.H est inclus p> BlockQuote>

Voici le CUBE.C Code: P>

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_LDLIBS := -lGLESv1_CM.so
LOCAL_MODULE    := egl
LOCAL_SRC_FILES := cube.c cuberenderer.c

include $(BUILD_SHARED_LIBRARY)


2 commentaires

J'ai balayé ce livre et je me suis mis à l'aide de code natif. Quand je me suis heurté à l'essayer, je viens de regarder une partie de l'exemple source, a pris un exemple de fichier .mk et renommé quelques choses et j'étais en train de monter et de courir. Ce livre est-il ridiculement compliqué sans raison ou n'avez-vous pas obligé de faire des choses de cette façon avant la sortie de NDK plus récente?


@Poldie, ce n'est pas complexe, cela nécessite juste une double révision. En outre, il est obsolète un peu, alors il raconte beaucoup de choses redondantes pour un apprentissage rapide, bien que utile de savoir. Les exemples fonctionnent bien avec des changements, mais quand je suis venu à GL, je ne peux tout simplement pas le compiler. La partie Java fonctionne bien.


4 Réponses :


17
votes

Ces bibliothèques sont fournies par Android lui-même. Cependant, la mise en place de votre projet pour les trouver et compiler correctement votre code JNI (natif) peut être décourageant correctement.

Je recommande d'utiliser GLBUFFER en tant que projet de départ, car il vous fournira un GLSURFaceView code> pour dessiner et vous configurer les bibliothèques d'Android appropriées. P>

Les détails de la liaison Pour les bibliothèques Android figurent dans JNI / Android.mk Code> à l'intérieur de ce projet si vous souhaitez lui donner un tir vous-même de zéro. P>

edit forte > - Apparemment, GLBUFFER est manquant jni / application.mk code>. Créez-le et mettez-le à l'intérieur: P>

APP_ABI := armeabi armeabi-v7a
APP_PLATFORM := android-8


5 commentaires

Je suis capable de construire avec succès NDK avec mes instructions ajoutées


Ouais, j'ai ajouté un fichier par défaut.properties avec cible = chaîne Android-8 et compilé (le GLBUFPER).


Hm .. je suis trop lent, encore. : D Merci d'aide. Quant aux sources de livres, Guy compilé avec un bras séparé GCC et des libs tirés de l'appareil Android, il a donc utilisé des objets comme EGL / EGL.h, pas sûr s'il est strictement requis ou si cette libération est automatiquement récupérée. Devra vérifier. Merci encore!


Il a des erreurs de syntaxe que le compilateur apporte, mais c'est l'autre chose. J'ai compilé avec succès Glbuffer, de sorte que tout le reste est ma prochaine tâche de "paniquer" les sources et sera surtout triviale.


# L'armv7 est significativement plus rapide en raison de l'utilisation du matériel FPU APP_ABI: = ARMEABI ARMEABI-V7A App_platform: = Android-9 Cela résout mon problème aussi



3
votes

Je viens d'ajouter xxx pré>

à cube.c & cuberendrender.c p>

modifié p> xxx pré>

à p> xxx pré>

mon Android.mk : P>

# The ARMv7 is significanly faster due to the use of the hardware FPU
APP_ABI := armeabi armeabi-v7a
APP_PLATFORM := android-9


0 commentaires

5
votes

J'ai recherché le NDK pour des instances du fichier d'en-tête "EGL / EGL.H". Cet exemple particulier compilera et exécutera le niveau d'API Android 15, mais certains autres niveaux d'API n'ont pas l'en-tête.


1 commentaires

Arrivé à cette question à la recherche de comment compiler EGL / EGL.H en-tête dans Android. Cela a fonctionné pour moi. Compilé en utilisant app_platform = android-14



-2
votes

Vous avez utilisé le nom de fichier glefle / glext.h deux fois.


0 commentaires