C++ OpenGL ES visualiseur en c# (5 / 8 étapes)

Étape 5: Ajouter la couche de soutien plateforme Android

OK, donc nous pouvons maintenant passer à Android. Commencez par créer un projet vide Android c#. Nous aurons également besoin un projet de bibliothèque dynamique Android C++. Je recommande de s’abstenir de mettre des caractères spéciaux comme un '.' au nom de ce projet car il pourrait confondre la toolchain VS Android. Nous devons ensuite faire référence à la bibliothèque C++ Android dans l’application Android c# et également ajouter une référence au projet de moteur de rendu partagé C++ dans le projet de bibliothèque C++ Android. Je recommande également que vous réglez l’API du projet c# sur 19 afin de correspondre le C++ qui est par défaut 19. Vous pouvez également juste changer niveau API du projet C++ à celle plus récente, mais en utilisant une ancienne on vous donne accès à davantage d’utilisateurs, si vous n’avez pas besoin d’aucune nouvel API.

Afin d’obtenir le travail de code partagé, nous aurons besoin de dire à l’éditeur de liens faire un lien vers les mathématiques et les bibliothèques GLESv2. Pour ce faire, ajoutez une page de propriétés du projet Android bibliothèque C++ et appeler quelque chose comme "Universel". Vous devez ensuite aller à la page d’entrée dans le groupe de liaison et attachez « m ; GLESv2;"au champ"Dépendances de bibliothèques".

Vous devriez maintenant être en mesure d’obtenir votre application Android c# compilé et exécuté, bien qu’il ne montre rien fantaisie tout de suite. Ensuite, nous aurons besoin créer des classes c# au projet Android. Tout d’abord, créez une classe nommée MyGLRenderer.

Dans son propre fichier il devrait ressembler à ceci :

 [DllImport("libAndroidGLESBridge.so")] public static extern void on_surface_changed(int width, int height); 
 [DllImport("libAndroidGLESBridge.so")] public static extern void on_draw_frame(); 
 #region IRenderer implementation public void OnDrawFrame(Javax.Microedition.Khronos.Opengles.IGL10 gl) { on_draw_frame(); } 
 public void OnSurfaceChanged(Javax.Microedition.Khronos.Opengles.IGL10 gl, int width, int height) { on_surface_changed(width, height); } 
#region IRenderer application public void OnDrawFrame (gl Javax.Microedition.Khronos.Opengles.IGL10) {on_draw_frame() ; public void OnSurfaceCreated(Javax.Microedition.Khronos.Opengles.IGL10 gl, Javax.Microedition.Khronos.Egl.EGLConfig config) { on_surface_created(); } #endregion } } 
' Public Sub OnSurfaceChanged (Javax.Microedition.Khronos.Opengles.IGL10 gl, int width, int height) {on_surface_changed (largeur, hauteur) ; using Android.Content;using Android.Views; using Android.Opengl; using Android.Util; 
' Public Sub OnSurfaceCreated (Javax.Microedition.Khronos.Opengles.IGL10 gl, Javax.Microedition.Khronos.Egl.EGLConfig config) {on_surface_created() ; namespace CppGLESXamarin.Android { public class MyGLSurfaceView : GLSurfaceView { private MyGLRenderer mRenderer; #endregion public MyGLSurfaceView(Context context, IAttributeSet attrs) : base(context, attrs) { //Emulator fix SetEGLConfigChooser(8, 8, 8, 8, 16, 0); 

Nous aurons également besoin MyGLSurfaceView qui devrait ressembler à :

 // Create an OpenGL ES 2.0 context. SetEGLContextClientVersion(2); 
 // Set the Renderer for drawing on the GLSurfaceView mRenderer = new MyGLRenderer(); SetRenderer(mRenderer); } } } 
 <?xml version="1.0" encoding="utf-8"?<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <Button android:id=" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text=" /> <CppGLESXamarin.Android.MyGLSurfaceView android:layout_width="fill_parent" android:layout_height="fill_parent" android:id=" /> </LinearLayout> 
Définir le convertisseur pour dessiner sur le mRenderer GLSurfaceView = new MyGLRenderer() ; SetRenderer(mRenderer) ;}

Maintenant ces deux pourraient être dans des fichiers séparés, un seul fichier ou même dans votre fichier principal selon comment vous souhaitez structurer votre code. Veuillez simplement noter que « libAndroidGLESBridge.so » doit correspondre au nom de la cible de votre bibliothèque. Vous devez définir cela en accédant à votre page de propriété pour le projet C++ Android et définissant le nom approprié dans le champ « Cible ». Préférence, il devrait commencer par « lib ». Ensuite, nous devrons mettre en œuvre ces fonctions qui sont importées dans c#.

Accédez à votre projet C++ Library Android. Supprimer l’en-tête par défaut parce que nous n’avez pas besoin. Remplacer tout ce qui est dans le fichier .cpp par défaut par ce qui suit :

C’est juste un petit morceau de code C qui nous permet d’appeler les méthodes nécessaires d’un objet statique de SimpleRenderer. Malheureusement, il n’est pas possible d’accéder aux objets C++ directement par le biais de P/Invoke (DllImport). Vous aurez besoin d’un morceau de « s’opposer agnostic » de code C comme ça pour envelopper l’interface. Je recommande que vous créez ces types d’emballages dans le Android code spécifique et non du code partagé. Tout comme vous ne devriez pas mettre le CX code pour Windows pour l’essentiel partagé projet C++. C’est juste pour retirer les objets superflus et la confusion possible.

Avant de pouvoir voir quoi que ce soit nous suffira d’ajouter notre nouvelle vue GLES d’interface utilisateur de l’application Android. Alors allez à "Main.axml" sous « disposition » sous « Ressources » dans le projet Android et ajouter que ce qui suit ci-dessous le bouton par défaut en mode source :

Si vous compilez et exécutez, vous devriez maintenant voir une belle tournant Cube.

Articles Liés

Visualiseur de réservoir d’eau cymatic

Visualiseur de réservoir d’eau cymatic

Le visualiseur de réservoir d'eau cymatic prend tout sons ou données sous forme de fichiers audio et diffusent les basses profondes « Buttkicker » à vibrer un réservoir plein d'eau. Différentes fréquences excitent les différents modes de vibration de
Visualiseur de musique (oscilloscope)

Visualiseur de musique (oscilloscope)

ce visualiseur musical offre un excellent moyen d'ajouter plus de profondeur à l'expérience de votre musique et est très facile à construire. Il peut également être utile comme un oscilloscope réel pour certaines applicationstout ce qui est nécessair
Visualiseur de musique pour le Tube Nixie

Visualiseur de musique pour le Tube Nixie

un visualiseur hypnotisant de musique inspiré par ces petits bars en haut d'iTunes. Quatorze russes IN-13 Nixie bargraph tubes sont utilisés comme l'affichage.La longueur de chaque tube nixie allume représente le volume d'une certaine fréquence dans
Glissant le visualiseur interactif

Glissant le visualiseur interactif

Ce projet est un visualiseur interactif coulissant. C'est un outil qui peut être utilisé pour faire défiler l'heure ou l'espace.Vidéo de démonstration :Nous l'avons utilisé pour visualiser un ensemble d'images 3-dimensional cadavre et au sens figuré
Visualiseur de musique LED avec Zybo Conseil

Visualiseur de musique LED avec Zybo Conseil

Ce tutoriel vous explique comment faire un visualiseur de musique de LED à l'aide de la Commission Zybo Zynq 7000 développement de Xilinx. Le Zybo est assez impressionnant car il a des fois un FPGA et un processeur ARM au Conseil d'administration. Po
Pirater un vieux téléviseur un visualiseur Audio

Pirater un vieux téléviseur un visualiseur Audio

Que fait musique look like ? Il n'est pas quelque chose que la plupart des gens pensent. Heureusement pour nous, quelqu'un a décidé de brancher un lecteur de musique jusqu'à un oscilloscope et de savoir. Pour les geeks de la non-électronique là-bas,
Débutants guident pour OpenGL : construire votre propre logiciel de CAO

Débutants guident pour OpenGL : construire votre propre logiciel de CAO

Ma licence de stagiaire Autodesk Maya expiré récemment. Donc j'ai fait ce que n'importe qui ferait, construire mon propre 3D CAD logiciel (attention Autodesk).Alors j'ai commencé à écrire mon application en C++ en utilisant OpenGL, SDL et dans enviro
Visualiseur de musique pour les spectacles Live

Visualiseur de musique pour les spectacles Live

dans ce instructable, je vais vous expliquer le système que j'ai mis en place pour produire un temps réel, le visualiseur de musique/battement contrôlé qui est projetée derrière un groupe de scène. Les photos ici sont d'une exécution prép, que je vie
Visualiseur de couleur

Visualiseur de couleur

Ever voulait une trousse de soudage interactive et simple pour les débutants ?  Le visualiseur de couleur a trois potentiomètres, résistances, une batterie et une LED RGB pour faire un simple kit de soudage et un projet interactif tout en un !  J'ai
Vidéo Beats : Visualiseur de musique

Vidéo Beats : Visualiseur de musique

vidéo bat est un visualiseur de musique de matériel en fonction - il génère une visualisation basée sur la musique vous nourrir et l'afficher sur n'importe quel téléviseur standard.  Voici une petite démo (passez à 27 secondes pour voir la visualisat
Visualiseur de SonicSand

Visualiseur de SonicSand

inspiré par cette instructable, j'ai commencé à penser comment je pourrais construire un orateur visualiseur de cône, sans l'ordinateur en tuant l'eau.Ma première pensée a été de sable, mais il s'est avéré trop lourd et n'a pas l'air trop bon.En foui
Téléphone Android IMU visualiseur

Téléphone Android IMU visualiseur

SalutTout d'abord, je tiens à me présenter. Je suis étudiant en génie électrique de la Turquie et également un blogueur. Je partage mon projet de mon blog (Clic pour mon Blog) et jusqu'à présent, je vais partager quelques unes d'instructables.À ce pr
Truc cool de Itunes - visualiseur

Truc cool de Itunes - visualiseur

Im va vous dire comment mettre vizualizer sur Itunes. Visualiseur est vraiment chose sympa et vous pouvez la contrôler.Étape 1: Ouvrez Itunes ! il suffit d'ouvrir votre Itunes.Étape 2: visualiseur!!! cliquez sur Afficher, puis visualiseur et visualis
Début traitement - le visualiseur de température

Début traitement - le visualiseur de température

Le traitement de langage de programmation en termes très simples, est une pure folie ! Si vous trouvez que difficile à croire, une visite sur la page Officiel de l'exposition transformation vous fera penser le contraire. Initialement développé par Be