Open Toolkit

Vor einiger Zeit bin ich auf das Open Toolkit gestoßen, einen sehr coolen OpenGL/OpenAL .NET-Wrapper. Anders als z.B. Tao funktioniert das Toolkit bei mir auch problemlos unter Linux/Ubuntu. Außerdem bietet OpenTK zusätzlich zur normalen C-API von OpenGL/OpenAL viele High-Level-Klassen. Besonders interessant ist für mich das einfache Zeichnen von Text, der dann auch noch gut aussieht.

Ein weiterer Pluspunkt: Es gibt ein Winforms-Control, was mit Mono und .NET gleichermaßen funktioniert und so erstmals die Entwicklung von CrossPlattform-OpenGL-Programmen mit .NET möglich macht.

Da es bisher kein Stable-Release gibt, sind jedoch Veränderungen der Schnittstelle an der Tagesordnung. Dafür kann man aber auch noch selber Patches einsenden, um diese zu verändern. So habe ich nun beispielsweise Unterstützung für Bezier-Kurven nachgereicht, sowie die Anbindung von Mathe-Klassen an die OpenGL-API ermöglicht.

Bekanntermaßen muss man bei vielen Matrix-Funktionen in OpenGL einen Zeiger übergeben, der auf das float[]-Array zeigt. OpenTK bringt eine Reihe von nützlichen Strukturen wie Vector3 oder Matrix4 mit, mit denen der sichere Umgang mit OpenGL problemlos möglich ist. Auch in Sprachen, die ohne Zeiger auskommen müssen – wie Visual Basic. Beispiel:

Vector3 start = new Vector3(1.0f, 0.0f, 5.0f);
Vector3 end = new Vector3(5.0f, 3.0f, -6.0f);
Matrix4 projection = Matrix4.LookAt(...);
GL.LoadMatrix(ref projection);
GL.Color4(Color.Green);

GL.Begin(BeginMode.Lines);
    GL.Vertex3(start);
    GL.Vertex3(end);
GL.End();

So einfach war OpenGL-Programmierung noch nie :-)