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)
4 Réponses :
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 Les détails de la liaison Pour les bibliothèques Android figurent dans edit forte > - Apparemment, GLBUFFER est manquant GLSURFaceView code> pour dessiner et vous configurer les bibliothèques d'Android appropriées. P>
JNI / Android.mk Code> à l'intérieur de ce projet si vous souhaitez lui donner un tir vous-même de zéro. P>
jni / application.mk code>. Créez-le et mettez-le à l'intérieur: P>
APP_ABI := armeabi armeabi-v7a
APP_PLATFORM := android-8
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
Je viens d'ajouter à
cube.c & cuberendrender.c p> modifié p> à p> 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
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. P>
Arrivé à cette question à la recherche de comment compiler EGL / EGL.H code> en-tête dans Android. Cela a fonctionné pour moi. Compilé en utilisant
app_platform = android-14 code>
Vous avez utilisé le nom de fichier glefle / glext.h deux fois. P>
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.