Antworten:
OpenTK ist eine Verbesserung gegenüber der Tao-API, da es den idiomatischen C # -Stil mit Überladung, stark typisierten Aufzählungen, Ausnahmen und Standard-.NET-Typen verwendet:
GL.Begin(BeginMode.Points);
GL.Color3(Color.Yellow);
GL.Vertex3(Vector3.Up);
im Gegensatz zu Tao, das lediglich die C-API widerspiegelt:
Gl.glBegin(Gl.GL_POINTS); // double "gl" prefix
Gl.glColor3ub(255, 255, 0); // have to pass RGB values as separate args
Gl.glVertex3f(0, 1, 0); // explicit "f" qualifier
Dies erschwert die Portierung, ist aber unglaublich benutzerfreundlich.
Als Bonus bietet es Schriftwiedergabe, Laden von Texturen, Handhabung von Eingaben, Audio, Mathematik ...
Update 18. Januar 2016 : Heute hat sich der OpenTK-Betreuer vom Projekt zurückgezogen und seine Zukunft ungewiss gelassen . Die Foren sind mit Spam gefüllt. Der Betreuer empfiehlt, zu MonoGame oder SDL2 # zu wechseln.
Update 30. Juni 2020 : OpenTK hat seit einiger Zeit neue Betreuer und eine aktive Zwietracht-Community. Die vorherige Empfehlung, eine andere Bibliothek zu verwenden, ist also nicht unbedingt richtig.
Ich denke, was @korona bedeutete, war, dass es nur eine C-API ist. Sie können es direkt aus C # mit einer Menge solcher Eingaben wie folgt verwenden:
[DllImport("opengl32")]
public static extern void glVertex3f(float x, float y, float z);
Sie müssten dies leider für jede einzelne OpenGL-Funktion tun, die Sie aufrufen, und genau das hat Tao für Sie getan.
Tao soll ein schöner Rahmen sein.
Von ihrer Website:
Das Tao Framework für .NET ist eine Sammlung von Bindungen, um die plattformübergreifende Entwicklung von Medienanwendungen unter Verwendung der .NET- und Mono-Plattformen zu erleichtern.
SharpGL ist ein Projekt, mit dem Sie OpenGL in Ihren Windows Forms- oder WPF-Anwendungen verwenden können.
Sie können OpenGL ohne Wrapper verwenden und nativ in C # verwenden. Genau wie Jeff Mc sagte, müssten Sie alle Funktionen, die Sie benötigen, mit DllImport importieren.
Was er ausgelassen hat, ist, einen Kontext zu erstellen, bevor Sie eine der OpenGL-Funktionen verwenden können. Es ist nicht schwer, aber es gibt nur wenige andere nicht so intuitive DllImports, die durchgeführt werden müssen.
Ich habe ein Beispiel-C # -Projekt in VS2012 mit fast dem Minimum erstellt, das erforderlich ist, um OpenGL unter Windows zum Laufen zu bringen. Es färbt nur das Fenster blau, aber es sollte ausreichen, um Ihnen den Einstieg zu erleichtern. Das Beispiel finden Sie unter http://www.glinos-labs.org/?q=programming-opengl-csharp . Suchen Sie unten nach dem Beispiel No Wrapper .
Ich würde auch das Tao Framework empfehlen . Aber noch ein Hinweis:
Schauen Sie sich diese Tutorials an: http://www.taumuon.co.uk/jabuka/
Was möchten Sie mit diesen Support-Bibliotheken tun? Nur OpenGL von C # zu verwenden ist einfach genug und erfordert keine zusätzlichen Bibliotheken afaik.
In Bezug auf die Wahl von XNA gegen OpenGL (etwas abseits des Themas, das ich kenne, aber da es früher angesprochen wurde) kann es in mehreren Fällen von Vorteil sein, OpenGL anstelle von XNA (und in anderen XNA anstelle von OpenGL ...) zu verwenden.
Wenn Sie die Anwendungen unter Linux oder Mac mit Mono ausführen möchten, ist OpenGL möglicherweise eine gute Wahl. Was meiner Meinung nach nicht so bekannt ist: Wenn Sie Kunden haben, die Ihre Anwendungen in einer Citrix-Umgebung ausführen, ist DirectX / Direct3D / XNA keine so wirtschaftliche Wahl wie OpenGL. Der Grund dafür ist, dass OpenGL-Anwendungen auf einer geringeren Anzahl von Servern gemeinsam gehostet werden können (aufgrund von Leistungsproblemen kann ein einzelner Server nicht unendlich viele Anwendungsinstanzen hosten) als DirectX / XNA-Anwendungen, für die dedizierte virtuelle Server auf Hardware ausgeführt werden müssen beschleunigter Modus. Es gibt andere Anforderungen wie unterstützte Grafikkarten usw., aber ich werde mich an das Problem XNA vs OpenGL halten. Als IT-Architekt, Softwareentwickler usw. muss dies berücksichtigt werden, bevor Sie zwischen OpenGL und DirectX / XNA wählen können ...
Eine Randnotiz ist, dass WebGL auf OpenGL ES3 afaik basiert ...
Als weitere Anmerkung sind dies nicht die einzigen Überlegungen, aber sie könnten einigen die Auswahl erleichtern ...
Für XNA 2.0 ist mindestens eine Shader 1.1-Karte erforderlich. Während alte Technik, hat nicht jeder eine. Einige neuere Laptops (nach unserer Erfahrung Toshiba-Tablets mit Intel-Grafik) unterstützen Shader 1.1 nicht. XNA wird auf diesen Computern einfach nicht ausgeführt.
Dies ist ein wichtiges Thema für uns und wir sind zu Tao und OpenGL übergegangen. Außerdem haben wir mit Tao Bindungen für Audio- und Lua-Unterstützung.