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:
    Link

    Gruss Sheldor


  • Administrator

    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


Anmelden zum Antworten