C# & OpenGL - 01 - Einführung
Einführung
Um OpenGL in C# nutzen zu können benötigen wir eine passende Bibliothek, die als Wrapper für die OpenGL Libraries fungiert. Im laufe der Zeit haben sich verschiedene Gruppen und Personen an diese Aufgabe gewagt (CsGL, Tao, glgen). Die Tao Bindings werden mitlerweile in dem mono CVS geführt, daher werden wir uns hier darauf konzentrieren.
Tao bietet Bindings für mehrere Libraries:
Tao.OpenAl - Für die OpenAL Audio Library
Tao.Cg - Für die OpenGL Shader Sprache CG
Tao.DevIl - Für die DevIL Image Library
Tao.Glut - Für Glut
Tao.Sdl - Für die SDL
Tao.OpenGl - Und natürlich unsere OpenGL Library
Tao benutzen
Die Offizielle Webseite von Tao findet sich unter TaoFramework.com. Leider ist dort schon seit langer Zeit ein Platzhalter. Der Library Download auf der Webseite funktioniert Problemlos unter Windows mit Visual.Net versagt aber bei mono und Linux, wegen Problemen mit dem Library Entry Point. Ebenso ist die Version dort wohl nicht mehr sehr aktuell, daher werden wir uns eine eigene Plattformunabhänige Library aus den Sourcen bauen.
UPDATE: Die neue Webseite ist jetzt online und in Kürze sollen fertige Librarys zum Download verfügbar sein.
CVS Download
Zuerst müssen wir uns die Sources aus dem CVS Repository holen:
cvs login
cvs -z3 co tao
Wer keinen Linux CVS zur Hand hat kann sich einen unter den zahlreichen Windows Clients aussuchen.
Kompilieren
Ganz wichtig ist das wir den Sourcecode mit mono bauen und nicht mit Visual.net
Die Librarys lassen sich alle nach dem gleichen Muster kompilieren, exemplarisch werde ich das hier anhand der OpenGL Library zeigen.
Der Code befindet sich in "tao/Framework/Projects/Tao.OpenGl"
Compiliert wird er mit:
Sollte ein Fehler der Art:
auftreten muss die Reihe 33 auskommentiert werden.
Probleme mit Windows DLL Namen
Es gibt zwei Wege die Probleme mit den Windows DLLs (opengl32.dll, ...) in Linux zu umgehen.
Der harte Weg
Vor dem Kompilieren müssen alle vorkommen der DLLs angepasst werden.
Der Config Weg
In der Datei "/etc/mono/config" werden folgende Einträge angelegt:
<dllmap dll="glu32.dll" target="libGLU.so"></dllmap>
<dllmap dll="devil.dll" target="libIL.so"></dllmap>
<dllmap dll="ilu.dll" target="libILU.so"></dllmap>
- Anmelden um Kommentare zu schreiben