Ich weiß, dass dies ein extrem alter Thread ist, aber Unity könnte für Sie von Interesse sein
clabe45
Antworten:
129
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:
im Gegensatz zu Tao, das lediglich die C-API widerspiegelt:
Gl.glBegin(Gl.GL_POINTS);// double "gl" prefixGl.glColor3ub(255,255,0);// have to pass RGB values as separate argsGl.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 nicht, dass diese Funktionen sehr repräsentativ sind, da sie alle veraltet und aus dem OpenGl-Kernprofil entfernt sind.
Arne
6
Richtig, diese Funktionen werden aus dem Kernprofil entfernt. Aber die Argumente sind immer noch gültig. "OpenTK ist eine Verbesserung gegenüber der Tao-API, da es einen idiomatischen C # -Stil mit Überladung, stark typisierten Aufzählungen, Ausnahmen und Standard-.NET-Typen verwendet"
Syaiful Nizam Yahya,
1
Die verlinkte Website ist für diesen Beitrag jetzt ungültig.
Sonny Childs
16
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:
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.
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 .
Tao scheint ein bewegliches Ziel zu sein. Ich habe den Link aktualisiert, da er jetzt auch von Mono zu SourceForge verschoben wurde.
Oliver
Wow, November 2005 ... ändert sich OpenGL nicht viel?
Jocull
1
@JonHarrop ja sieht aus wie sie nicht eine Umleitung dort mit einer Github Seite jetzt eingestellt opentk.github.io
Traum
4
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 welchem Namespace befinden sich diese Klassen?
MegaByte
4
OpenGL ist nicht Teil von .NET, ab Version 4.0
Mafu
3
@ MegaByte Der Zugriff auf sie muss über den Plattformaufruf erfolgen.
Begrenzte Versöhnung
2
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.
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:
im Gegensatz zu Tao, das lediglich die C-API widerspiegelt:
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.
quelle
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:
Sie müssten dies leider für jede einzelne OpenGL-Funktion tun, die Sie aufrufen, und genau das hat Tao für Sie getan.
quelle
Tao soll ein schöner Rahmen sein.
Von ihrer Website:
quelle
SharpGL ist ein Projekt, mit dem Sie OpenGL in Ihren Windows Forms- oder WPF-Anwendungen verwenden können.
quelle
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 .
quelle
Ich würde auch das Tao Framework empfehlen . Aber noch ein Hinweis:
Schauen Sie sich diese Tutorials an: http://www.taumuon.co.uk/jabuka/
quelle
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.
quelle
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 ...
quelle
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.
quelle