C++ OpenGL ES Viewer in C# (5 / 8 stap)

Stap 5: Android-platform ondersteuning laag toevoegen


OK kunnen dus nu we gaan naar Android. Allereerst een nieuw Android C#-project te maken. We zullen ook een Android C++-Project voor dynamische bibliotheek nodig. Ik zou adviseren af te zien van de invoering van alle speciale tekens zoals een '.' in de naam van dit project omdat het zou kunnen de Android VS toolchain verwarren. We moeten dan verwijst naar de Android C++-bibliotheek in de Android C#-toepassing en ook het toevoegen van een verwijzing naar het project van de renderer C++ Shared op Android C++ library project. Ik zou ook adviseren dat u de API van de C#-project tot en met 19 te voldoen van de C++ die standaard tot en met 19. U kunt ook gewoon de C++-project API niveau naar de newer men maar met behulp van een oudere een u toegang tot meer gebruikers geeft als u nieuwe API's hoeft.

Om de werking van de gedeelde code zullen we om te vertellen van de linker te koppelen aan de wiskunde en GLESv2 bibliotheken. Om dit te doen, een pagina met eigenschappen toevoegen aan het Android C++ Library-project en noem het zoiets als "Universal". U moet gaan naar de pagina van de Input in de Linker groep en prepend "m; GLESv2;"aan de"Bibliotheek afhankelijkheden"veld.

U moet nu kunnen zijn om uw Android C#-toepassing gecompileerd en uitgevoerd, maar het zal niet fancy gewoon nog niet tonen. Vervolgens zullen we enkele C#-klassen maken in de Android project. Eerst Maak een klasse met de naam MyGLRenderer.

In zijn eigen bestand moet het als volgt uitzien:

 [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 uitvoering publiek void OnDrawFrame (Javax.Microedition.Khronos.Opengles.IGL10 gl) {on_draw_frame(); public void OnSurfaceCreated(Javax.Microedition.Khronos.Opengles.IGL10 gl, Javax.Microedition.Khronos.Egl.EGLConfig config) { on_surface_created(); } #endregion } } 
openbare nietige OnSurfaceChanged (Javax.Microedition.Khronos.Opengles.IGL10 gl, int breedte, int hoogte) {on_surface_changed (breedte, hoogte); using Android.Content;using Android.Views; using Android.Opengl; using Android.Util; 
openbare nietige 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); 

We zullen ook worden nodig MyGLSurfaceView die zou moeten uitzien:

 // 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> 
Instellen van de Renderer voor puttend uit de GLSurfaceView-mRenderer = nieuwe MyGLRenderer(); SetRenderer(mRenderer);}

Beide zou nu in aparte bestanden, één bestand of zelfs in uw hoofdbestand afhankelijk van hoe u wilt structureren van uw code. Houd er gewoon rekening mee dat "libAndroidGLESBridge.so" de naam van het doel van uw bibliotheek moet. U moet deze worden ingesteld door te gaan u het eigenschappenblad voor de Android C++-project en het instellen van de juiste naam in het veld "Target". Het moet bij voorkeur beginnen met "lib". Vervolgens zullen we om deze functies die in C# worden ingevoerd.

Ga naar uw Android C++ Library project. Verwijder de standaard-header omdat we niet nodig hebben. Vervanging van wat er in het standaardbestand .cpp met het volgende:

Dit is slechts een klein stukje van de C-code dat ons toelaat om de nodige methoden van een statische SimpleRenderer-object aanroepen. Het is helaas niet mogelijk om C++ objecten rechtstreeks benaderen via P/Invoke (DllImport). Je moet een stukje 'bezwaar agnostic' C code zoals dit moet teruglopen van de interface. Ik adviseer dat u deze soorten wrappers in de Android specifieke code en niet de gedeelde code maken. Net als u niet moet zetten de CX code voor Windows in de belangrijkste gedeeld C++-project. Dit is gewoon te verwijderen van de geen onnodige rommel en de mogelijke verwarring.

Voordat zij in staat om te zien iets zullen gewoon we onze nieuwe GLES weergave aan van de toepassing van de Android UI toevoegen. Dus ga naar "Main.axml" onder "indeling" onder "Resources" in de Android-project en voeg dat de volgende bulken de standaardknop in de bronweergave:

Als u compileert en uitvoert ziet u nu een mooie draaiende kubus.

Gerelateerde Artikelen

Beginners Guide to OpenGL: Maak uw eigen CAD-software

Beginners Guide to OpenGL: Maak uw eigen CAD-software

Mijn Autodesk Maya student licentie verlopen onlangs. Dus ik deed wat iedereen zou doen, bouwen mijn eigen 3D CAD software (Let op Autodesk).Dus ik begon te schrijven van mijn toepassing in C++ met behulp van OpenGL, SDL en in ongeveer een week, dit
Zonsverduistering Viewer

Zonsverduistering Viewer

Meeste zonsverduistering kijkers zijn zo gemaakt dat u niet hoeft te staren naar de zon. Terwijl goed bedoelingen goed zijn, vind ik dat saai. Zo hier gaat u. Volg alle waarschuwingen en veilig.Stap 1: Waarom dit doen?Ik vaak een hekel aan de meeste
Het gebruik van Pepakura Viewer

Het gebruik van Pepakura Viewer

Deze tutorial beschrijft Pepakura Viewer.In geval u op zoek bent voor Pepakura designer tutorial, hoofd hier:Bijgewerkt: 2013/01/11... 5 uur werken tot nu toe :)Stap 1: Video op Youtube (HD 720p)In geval liever u video lezing. Op mijn kanaal zo goed
Verwijderen de knop verwijderen op een digitale foto-viewer om er veilig voor oma

Verwijderen de knop verwijderen op een digitale foto-viewer om er veilig voor oma

geïnspireerd door de zelfgemaakte digitale fotolijst hier, ik ging op zoek naar de onderdelen voor het bouwen van mijn eigen. Beschamend, vond ik een goedkoop genoeg afgewerkt product dat ik kocht in plaats van het opbouwen van mijn eigen. Echter, ik
Zonsverduistering Viewer uit de lezing van glazen en karton

Zonsverduistering Viewer uit de lezing van glazen en karton

Zonsverduisteringen zijn zeldzame astronomische gebeurtenissen spannend zijn om te kijken, maar vereist enige vorm van apparatuur voor het veilig bekijken. Zelfs als de meeste van de zon is verduisterd, straalt het nog voldoende licht, met name ultra
Een VR Viewer voor tabletten met uitstekende optiek

Een VR Viewer voor tabletten met uitstekende optiek

Dit Instructable toont u hoe te maken van een VR-viewer zoals Googles karton maar geoptimaliseerd voor tabletten. Afgezien van de tablet zijn de kosten zeer laag. Het maakt gebruik van twee paar Leesbrillen van een dollaropslag (Dollar boom), een kun
Goedkope aangepaste VR Viewer van telefooncel

Goedkope aangepaste VR Viewer van telefooncel

Ik kocht een goedkope Google karton viewer van ebay, maar spoedig na het gebruik ervan heb ik besloten om mijn eigen te bouwen. Het was vervelend hoe ik moest blijven bewegen de kijker gewoon om te zien het hele scherm. Ik besefte dat dit was omdat d
Oneindige werelden Viewer!

Oneindige werelden Viewer!

Uw eigen kloon leger is nog nooit zo echt geweest. Als u ooit bij de kapper tussen twee spiegels en voelde zat hebt alsof u in de schemerzone vast zaten, maak je klaar om het gevoel weer helemaal dat tintelen van oneindigheid. En opnieuw en opnieuw e
Maak je eigen VR-ervaring met DODOcase Virtual Reality Viewer

Maak je eigen VR-ervaring met DODOcase Virtual Reality Viewer

The Google karton en DODOcase virtuele werkelijkheid Viewer zijn netjes, goedkope manieren om immersieve Virtual Reality ervaring met hoofd bijhouden van de navigatie. Ik wilde enkele grote voorbeelden van VR Apps vinden en vooral voor het maken van
Sun Viewer: Observeren de zon veilig met een verrekijker

Sun Viewer: Observeren de zon veilig met een verrekijker

Met verrekijkers naar project een beeld van de zon is een oude truc, maar het is een goeie! Echter, de meeste oudere boeken bellen voor een installatie die gebruikmaakt van een fotografische statief en is moeilijk te zetten en gericht houden (met nam
Zelfgemaakte nachtzicht infrarood Goggle toepassingsgebied DIY CCTV View Finder Camera leidde Module

Zelfgemaakte nachtzicht infrarood Goggle toepassingsgebied DIY CCTV View Finder Camera leidde Module

Night vision goggles werden uitgevonden voor gebruik door het leger. De technologie die het mogelijk maakt van nachtzicht heet een infrarood image intensifier buis. De buizen Pipetteer fotonen in elektronen door een lading passeren een foto kathode e
Delphi tutorial - Picture Viewer

Delphi tutorial - Picture Viewer

Dus, dit kan ook worden opgeroepen een instructable, hoe Maak eenvoudige (en nog complexer) foto-viewer met Delphi programmeer gereedschap (of met Lazarus, gratis pascal programming tool).Om dit te doen is het duidelijk dat één moeten hebben van Delp
DYI polariserende Viewer

DYI polariserende Viewer

Inleiding: It's about time die iemand geboden instructies met oude lenzen van een paar 3D bril. Zodra u deze viewer maakt, zult u kunnen experimenteren met gepolariseerd licht. De meer kijkers die u aanbrengt, leuke hoe meer wetenschap u kunt hebben.
Maak uw eigen 3D-viewer (A glazen prisma), Cross kant van het oog door SIDE(CES) stereogrammen, afbeeldingen en video's bekijken in 3D

Maak uw eigen 3D-viewer (A glazen prisma), Cross kant van het oog door SIDE(CES) stereogrammen, afbeeldingen en video's bekijken in 3D

A doen het zelf glazen prisma, gevuld met water of glycerine olie, bekijken van 3D Kant door kant (CES) foto's, dat wil zeggen (CES) stereogrammen en (CES)Videosclearly en eenvoudig zonder dat u hoeft te leren de methode cross oog.Dit project toont u