C++ OpenGL ES Viewer i C# (2 / 8 steg)
Steg 2: Få vinkel
Innan du kan gå på du måste installera Microsofts gren av vinkel projektet (https://github.com/MSOpenTech/angle) som gör att du kan komma åt OpenGL ES på alla Windows plattformar genom en intelligent inslagning DirectX. Det sätt jag rekommenderar att man gör detta är genom att lägga den som en Git projekt i Visual Studio. Detta gör att du enkelt synkronisera i några nya uppdateringar och enkelt skjuta eventuella ändringar du gör i din egen gren där du sedan kan göra en pull begäran. Du kan också bara ladda ner zip-arkiv och gå därifrån. Jag tror de dokumentera installationen mycket själva men i huvudsak installationen innebär att du måste öppna projektet för varje plattform och sedan sammanställa det för varje konfiguration och arkitektur (felsöka, Release, x 86, x64(on Win Store), ARM). För den här läraren behöver du bara Windows 8.1 och Windows Phone 8.1 binärer, inte skrivbordet eller Windows 10 ettor. Efter att du har sammanställt dem alla måste du köra skriptet installera i källkatalogen. Detta kommer setup din miljövariabler så att VS vet var att hitta vinkeln binärer och headers.
Nu kommer vi att skapa några makron som definierar där vinkel är installerat. Starta genom att gå till "Property Manager", du kan komma dit med hjälp av sökrutan i övre högra hörnet. Så nu Högerklicka på Windows projektet och välj Lägg till ny egendom blad... Kalla det "Vinkel". Nu öppna den genom att dubbelklicka på den i någon konfiguration. Slutligen gå till användaren makron och lägga till "AngleBinPath" och "AngleIncPath". "Bin" en ska peka till "$(AngleRootPath) \winrt\8.1\windows\src\$ (konfiguration) _ $(plattform) \" och den "Inc" en till "$(AngleRootPath) \include\". Se till att aktivera makrot för bygga levnadsförhållanden. Bara Använd samma för Windows Phone projektet men den här gången "$(AngleRootPath) \winrt\8.1\windowsphone\src\$ (konfiguration) _ $(plattform) \" istället för "$(AngleRootPath) \winrt\8.1\windows\src\$ (konfiguration) _ $(plattform) \". Inkludera sökvägen förblir densamma.
Nu när vi har makron måste vi lägga till inkludera kataloger till projektet samt de bibliotek som länkaren ska länka till. Så gör du följande i egenskapslistan både vinna och WP projekt. Till vänster kommer du se en "Linker" och på det en "Input" sidan. Öppna den och prepend "$(AngleBinPath) lib\libGLESv2.lib;$ (AngleBinPath) lib\libEGL.lib;" till "Ytterligare beroenden" fältet. Också gå till "C/C++" och sedan "allmänt". Här måste du prepend "$(AngleIncPath);" till fältet "Ytterligare omfattar kataloger". Eftersom detta är en egenskapssida, du behöver bara göra detta på en konfiguration och det kommer att tillämpas i hela. Kom bara ihåg att göra exakt samma sak med egenskapssidan Windows Phone.
Nästa vi måste lägga till DLL-filer till C#-projekt. Detta tyvärr fungerar så att jag kunde hitta för att få dem kopieras till katalogen runtime och utan dem du får där en mängd fel. Så både vinna och WP CISS projekt lägga till libEGL.dll och libGLESv2.dll som befintliga filer. Lämna dem konfigurerats som "Bygga åtgärd" "Innehåll" och "Kopia till utdatakatalogen" "Kopiera inte". Det spelar ingen roll vilken DLL-filer du väljer nu eftersom vi kommer att ändra sökvägarna senare på att automatiskt peka till rätt filer (vi behöver en annan för varje konfiguration). Så när du har dem, öppna katalogen där projektet är. Vi vill nu hitta Windows .csproj filen och öppna den med anteckningar. Kom ihåg att bara spara allt innan du gör detta. Du har nu att hitta platsen där införandet av dll är deklarerad.
Ersätt:
< innehåll Include="libGLESv2.dll" / >< br >< innehåll Include="libEGL.dll" / >
Med:
< innehåll Condition="'$(Platform)" == 'x86' "inkludera ="$(AngleRootPath) \winrt\8.1\windows\src\$ (konfiguration) _Win32\libGLESv2.dll"/ >< br >< innehåll Condition="'$(Platform) "=="x86"" inkludera = "$(AngleRootPath) \winrt\8.1\windows\src\$ (konfiguration) _Win32\libEGL.dll" / >
< innehåll Condition="'$(Platform)'! = 'x86'" inkluderar = "$(AngleRootPath) \winrt\8.1\windows\src\$ (konfiguration) _ $(plattform) \libGLESv2.dll" / >
< innehåll Condition="'$(Platform)'! = 'x86'" inkluderar = "$(AngleRootPath) \winrt\8.1\windows\src\$ (konfiguration) _ $(plattform) \libEGL.dll" / >
Därför behöver vi detta komplicerade tillstånd baserat uttalande är eftersom plattformen känt till C# som x86 C++ som "Win32". Tur att resten av plattformarna som har samma namn...
Efter gör den här, gör exakt samma sak för Windows Phone-projektet (men den "Fönstren" efter 8.1 bör nu vara "windowsphone" och sedan gå tillbaka till Visual Studio. VS bör fråga om du vill att filerna ska laddas, bara säga uppdatera alla. Och din DLL-filer bör nu automatiskt peka på rätt versioner vid kompileringen. Du kan ta bort DLL-filer som från början har kopierats till mapparna projekt använder Explorer som nu oanvända.
Därefter kan du bara lägga till referenser till runtime komponenterna i din C#-projekt. Se till att använda WP en för WP projektet och vinna en för Win-projektet.
Jag skulle rekommendera du kolla och se om du fortfarande kan sammanställa och distribuera programmet innan du går vidare. Kom bara ihåg att välja en arkitektur som x86 eller ARM som "Någon CPU" kommer att ge fel med de infödda bibliotek. Om allt fungerar bra bör du se en tom ansökan starta upp.