OpenGL unter C#
-
Hallo,
wenn ich bisher OpenGL in meinen Programmen verwendet habe, dann habe ich als Programmiersprache immer C++/CLI verwendet. Nun überlege ich aber auf C# umzusteigen. (Gründe dafür gibt es viele)Um ehrlich zu sein. Bisher habe ich von C# noch so gut wie keine Ahnung.
Ich habe nur mal gehört, dass man OpenGL in C# nicht so leicht einsetzen kann wie in anderen Programmiersprachen. Man braucht angeblich einen Wrapper dafür.
Könnt ihr mir dazu mehr erzählen. Warum braucht man einen Wrapper ?
Was macht dieser genau ? Und welchen Wrapper verwendet man am besten ?Vielen Dank für eure Antworten.
mfg arena_blau---
-
arena_blau schrieb:
Um ehrlich zu sein. Bisher habe ich von C# noch so gut wie keine Ahnung.
Könnt ihr mir dazu mehr erzählen. Warum braucht man einen Wrapper ?
Was macht dieser genau ? Und welchen Wrapper verwendet man am besten ?Lern zuerst ein paar C# Grundlagen wenn du keine Ahnung von C# hast.
Ich denke die wirst du schnell Lernen, ist viel einfacher als C++.Ein Wrapper ist ein Programm, das als Schnittstelle zwischen zwei Programmcodes agiert.
Beispiel XNA -> Direct X
Folgenden habe ich für Open GL gefunden:
LinkGruss Sheldor
-
arena_blau schrieb:
Warum braucht man einen Wrapper?
Du kannst nicht einfach so eine C Bibliothek in C# einbinden. Entweder musst du die C Funktionen über P/Invoke aufrufen, was eher teuer ist und dadurch ungeeignet für sowas wie OpenGL oder dann einen Wrapper in C++/CLI bauen. OpenGL ist halt eine C Bibliothek und damit unmanaged, während C# im managed Bereich ist. Man muss da irgendwie eine Brücke bauen.
arena_blau schrieb:
Was macht dieser genau?
Die Darstellungen von Objekten im Speicher ist in C#, bzw. dem managed Bereich, anders als in C, bzw. dem unmanaged Bereich. Daher müssen Konvertierungen der Daten durchgeführt werden, wenn man aus C# eine C Funktion aufrufen möchte oder umgekehrt. Auch werden Funktionen anders aufgerufen, der Wrapper delegiert die Aufrufe korrekt weiter und sorgt für die richtigen Aufrufkonventionen.
arena_blau schrieb:
Und welchen Wrapper verwendet man am besten?
Da bin ich überfragt. Ich kenne nur The Open Toolkit Library, welches z.B. bei Mono zum Einsatz kommt.
Grüssli