C++ OpenGL ES Viewer i C# (5 / 8 steg)

Steg 5: Lägg till Android-plattformen stöd lager



OK så nu kan vi gå vidare till Android. Börja med att skapa ett tomt Android C#-projekt. Vi kommer också att behöva en Android C++ dynamisk Library Project. Jag skulle rekommendera att avstå från att sätta några speciella tecken som en '.' i detta projekt eftersom det kan förvirra VS Android toolchain. Vi måste referera Android C++ library i programmet Android C# och även lägga till en referens till delade C++ renderer projektet i Android C++ library projektet. Jag skulle också rekommendera att du ändra API av C#-projektet till 19 för att matcha C++ som standard till 19. Du kan också bara ändra projektets C++ API nivå till den nyare men med en äldre man ger dig tillgång till fler användare om du inte behöver några nya API: er.

För att få delad kod fungerar kommer vi att berätta länkaren att länka till matematik och GLESv2 bibliotek. För att göra detta, lägga till en egenskapssida i Android C++ Library projektet och kallar det något liknande "Universal". Du måste gå till sidan Input i gruppen länkare och prepend "m; GLESv2;"till"Bibliotek beroenden"fältet.

Du bör nu kunna få Android C# programmet kompileras och körs, men det inte kommer Visa något fancy ännu. Nästa vi kommer att behöva skapa vissa C# klasser i Android-projektet. För det första skapa en klass som heter MyGLRenderer.

I en egen fil bör det se ut så här:

användande System.Runtime.InteropServices;
använder Android.Opengl;

namnområdet CppGLESXamarin.Android
{
klass MyGLRenderer: Java.Lang.Object, GLSurfaceView.IRenderer
{
[DllImport("libAndroidGLESBridge.so")]
offentliga statisk extern void on_surface_created();

[DllImport("libAndroidGLESBridge.so")]
offentliga statisk extern void on_surface_changed (int bredd, int höjd);

[DllImport("libAndroidGLESBridge.so")]
offentliga statisk extern void on_draw_frame();

#region IRenderer genomförande
public void OnDrawFrame (Javax.Microedition.Khronos.Opengles.IGL10 gl)
{
on_draw_frame();
}

public void OnSurfaceChanged (Javax.Microedition.Khronos.Opengles.IGL10 gl, int bredd, int höjd)
{
on_surface_changed (bredd, höjd);
}

public void OnSurfaceCreated (Javax.Microedition.Khronos.Opengles.IGL10 gl, Javax.Microedition.Khronos.Egl.EGLConfig config)
{
on_surface_created();
}
#endregion
}
}

Vi kommer också att behöva MyGLSurfaceView som ska se ut:

använder Android.Content;
använder Android.Views;
använder Android.Opengl;
använder Android.Util;

namnområdet CppGLESXamarin.Android
{
allmän klass MyGLSurfaceView: GLSurfaceView
{
privat MyGLRenderer mRenderer;

offentliga MyGLSurfaceView (kontext sammanhang, IAttributeSet attrs): base (sammanhang, attrs)
{
Emulator fix
SetEGLConfigChooser (8, 8, 8, 8, 16, 0);

Skapa ett OpenGL ES 2.0-sammanhang.
SetEGLContextClientVersion(2);

Ställa in återgivningstillägget för att rita på GLSurfaceView
mRenderer = ny MyGLRenderer();
SetRenderer(mRenderer);
}
}
}

Nu kan båda dessa vara i separata filer, en fil eller ens i din huvudfil beroende på hur du vill strukturera din kod. Observera bara att "libAndroidGLESBridge.so" namnet på målet på biblioteket. Du bör ange detta genom att du egenskapssidan för Android C++ projektet och ställa in lämpligt namn i fältet "Mål". Det bör helst börja med "lib". Därefter kommer vi att genomföra dessa funktioner som importeras till C#.

Gå till projektet C++-bibliotek för Android. Ta bort rubriken standard eftersom vi inte behöver den. Ersätta vad är i standard .cpp fil med följande:

Detta är bara en liten bit av C kod som tillåter oss att kalla de nödvändiga metoderna för ett statiskt SimpleRenderer objekt. Tyvärr är det inte möjligt att komma åt C++-objekt direkt via P/Invoke (DllImport). Du behöver en bit "protesterar agnostiker" C kod såhär att Linda gränssnittet. Jag rekommenderar att du skapar dessa typer av omslag i Android specifika koden och inte delade koden. Precis som du inte bör delade sätta CX koden för Fönstren i huvudsak C++ projektet. Detta är bara att ta bort onödiga trassel och möjliga förvirring.

Innan man kan se något vi bara måste du lägga till våra nya GLES Visa att programmet Android UI. Så gå till "Main.axml" under "layout" under "Resurser" i Android-projektet och Lägg till följande bälg standardknappen i vyn Källa:

<? XML-version = "1.0" encoding = "utf-8"?
< LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"
Android: orientering = "vertikala"
Android: layout_width = "fill_parent"
Android: layout_height = "fill_parent" >
< knappen
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 >

Om du kompilera och köra bör du nu se en fin snurrande kub.

Se Steg
Relaterade Ämnen

Nybörjarguide till OpenGL: Bygg din egen CAD-program

Min Autodesk Maya elevtillstånd löpt ut nyligen. Så jag gjorde vad någon skulle göra, bygga min egen 3D CAD-programvara (se upp Autodesk).Så jag började skriva mitt program i C++ använder OpenGL, SDL och i ungefär en vecka, detta var resultatet.Några...

En VR Viewer för tabletter med utmärkt optik

Detta Instructable visar dig hur man gör en VR viewer som Googles kartong men optimerad för tabletter. Förutom tabletten är kostnaden mycket låg. Den använder två par läsglasögon från en dollar store (Dollar Tree), en plast skokartong, och ett par bi...

DYI polariserande Viewer

Inledning: Det är på tiden att någon förutsatt att anvisningarna använda gamla objektiv från ett par 3D-glasögon. När du bygger denna viewer, kommer du att kunna experimentera med polariserat ljus. Mer tittare du gör, roliga desto mer vetenskap du ka...

DODOcase VR Viewer med justerbar Headstrap

Marknadsundersökningar på en närliggande skola visade att de flesta elever trodde DODOcase virtuell verklighet betraktaren skulle vara bättre om de inte hade att hålla kartong upp till deras ansikten! I följande steg beskrivs vår lösning på detta.Ste...

DODOcase VR Viewer med hjälm

Vi hade skitkul med våra DODOcase virtuell verklighet viewer, men ville göra något mer behaglig att använda. Vårt syfte med detta Instructable är att visa dig hur man ska gå från att göra grundläggande DODOcase VR betraktaren att montera den bekvämt...

Oändlig världar Viewer!

Din egen klon armé har aldrig varit så verklig. Om du har någonsin suttit på barberaren mellan speglar och kändes som om du var fast i Twilight Zone, redo att känna det pirra i oändlighet över igen. Och igen och igen och igen. In detta enkla projekt...

Ergonomiska Down-View Monitor Adapter

en ned-view monitor arbetsstation är en metod för att placera en datorskärm nedanför ögonhöjd av ergonomiska skäl.Kommersiella, färdiga down-Visa skrivbord och adaptrar är tillgängliga men dyrt.Här är ett sätt att du kan göra en ned-view monitor grej...

Installera Team Viewer på Ubuntu

Jag har använt Ubuntu under lång tid, jag kör det längs sidan med windows. Jag har en läraren på hur till tvåfaldig stöveln Fönstren och alla andra operativsystem, kan du också läsa som. Ett av de mjukvaror som jag använder ofta är team viewer, men t...

Med Team Viewer för att styra en annan dator

mina föräldrar har nyligen fått på information highway och snabbt upptäckte de visste ingenting om världen bred interweb ;). Snarare än att gå över till deras hus varje dag jag laddade ner ett fjärrstyrningsprogram så jag kunde hjälpa dem navigera,...

Skapa din egen VR erfarenhet med DODOcase virtuell verklighet Viewer

The Google kartong och DODOcase virtuella verkligheten Viewer är snyggt, billigt sätt att uppleva verklighetstrogen virtuell verklighet med huvudet spårning navigering. Jag ville hitta några bra exempel på VR Apps och särskilt att skapa en anpassad V...

Sun Viewer: Observera solen tryggt med kikare

Med hjälp av kikare för att projicera en bild av solen är en gammal trick, men det är bra! De flesta äldre böcker kräver dock en setup som använder en fotografisk stativ och är svårt att ställa in och hålla orienterade (särskilt för grundskoleelever)...

LED Cyclops, väktare av galaxen, DODOcase VR Viewer

The DODOcase VR betraktare V1.1 är en billig kit baserat på Google papp projekt. Denna viewer fungerar med många mobiltelefoner och tillhandahåller en snygg virtuell verklighet, många VR program finns tillgängliga.Jag såg nyligen väktare galaxen och...

Smartphone virtuell verklighet Viewer!

Det är "Bygga Night" på TechShop Chandler, och kvällens projekt är en DodoCase virtuella verkligheten Viewer...Jag måste erkänna att när jag skrev för detta evenemang, jag hade inte en aning vad jag var att komma in eftersom jag hade aldrig hört...

Wearable DODOcase virtuell verklighet Viewer

Vi tog våra DODOcase till en närliggande skola att fråga andra studenter vad de trodde skulle kunna förbättras över "basmodellen", och den överväldigande majoriteten av studenterna angav de ville ha en virtuell verklighet viewer de hade inte att...

Hur man ska anpassa en Door Viewer "Fish-eye lins" till en Full-size kamera

vi sett tutorials på denna webbplats som visar dig hur en billig dörr tittaren kan användas som en fish-eye lins på en enkel punkt och skjuta digitalkamera, men vad händer om du vill prova effekten på en kamera med en full storlek objektiv? Detta Ins...

Gör din egen 3D viewer (A glas prisma), för att Visa Cross öga sida av SIDE(CES) bilder, stereogram och video i 3D

A bedriver det själv glas prisma, fylld med vatten eller glycerin olja, för att visa 3D Sida vid sida (CES) bilder, dvs (CES) stereogram och (CES)Videosclearly och enkelt, utan att behöva lära sig metoden över ögat.Detta projekt visar hur att bygga s...

Smartphone 3D viewer

3D-bilder är fantastiska! När du tittar på en 3D-bild får jag känslan av att det är levande och verkliga!Jag hittade nyligen en stor app på android kallas: "Gör det 3D" vilket gör att du tar fantastiska 3D-bilder i hög upplösning med din Android...

IPAD 3D Viewer

varför en Ipad 3D viewer?• Ipad är bärbar, tillräckligt hög upplösning för högkvalitativa 3D• Loreo Pixie viewer fungerar bra, men de flesta människor gillar inte öra gummiband• Kommersiella TV tittare arbete, men du måste hålla dem till ditt huvud e...

Haj-Viewer 5.000!

Detta är min Periscope projekt. Med denna lilla skönhet, kan du också ta bilder under vattnet från säker, torr och bekvämligheten av docka eller båt. (om vädret tillåter)Jag postat nyligen min första instuctable, undervattenskamera bostäder på en bud...