Odpowiedzi:
OpenTK jest ulepszeniem w stosunku do Tao API, ponieważ używa idiomatycznego stylu C # z przeciążeniem, silnie wpisanymi typami wyliczeń, wyjątkami i standardowymi typami .NET:
GL.Begin(BeginMode.Points);
GL.Color3(Color.Yellow);
GL.Vertex3(Vector3.Up);
w przeciwieństwie do Tao, które po prostu odzwierciedla C API:
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
To sprawia, że portowanie jest trudniejsze, ale jest niesamowicie przyjemne w użyciu.
Jako bonus zapewnia renderowanie czcionek, ładowanie tekstur, obsługę danych wejściowych, audio, matematykę ...
Aktualizacja 18 stycznia 2016 : Dziś opiekun OpenTK odszedł od projektu , pozostawiając niepewną przyszłość. Fora są pełne spamu. Opiekun zaleca przejście na MonoGame lub SDL2 #.
Aktualizacja 30 czerwca 2020 : OpenTK ma już od jakiegoś czasu nowych opiekunów i aktywną społeczność discorda. Zatem poprzednie zalecenie dotyczące korzystania z innej biblioteki niekoniecznie jest prawdziwe.
Myślę, że @korona miał na myśli, ponieważ jest to tylko C API, możesz go używać bezpośrednio z C #, używając ogromnej ilości pisania w ten sposób:
[DllImport("opengl32")]
public static extern void glVertex3f(float x, float y, float z);
Niestety, musiałbyś to zrobić dla każdej wywoływanej funkcji OpenGL i jest to w zasadzie to, co zrobił dla ciebie Tao.
Tao ma być fajnym frameworkiem.
Z ich witryny:
Tao Framework dla .NET to zbiór powiązań ułatwiających tworzenie wieloplatformowych aplikacji multimedialnych z wykorzystaniem platform .NET i Mono.
SharpGL to projekt, który pozwala używać OpenGL w aplikacjach Windows Forms lub WPF.
Możesz OpenGL bez opakowania i używać go natywnie w C #. Tak jak powiedział Jeff Mc, należałoby zaimportować wszystkie potrzebne funkcje z DllImport.
Pominął konieczność stworzenia kontekstu, zanim będzie można użyć którejkolwiek z funkcji OpenGL. Nie jest to trudne, ale istnieje kilka innych niezbyt intuicyjnych plików DllImport, które należy wykonać.
Stworzyłem przykładowy projekt C # w VS2012 z prawie absolutnym minimum niezbędnym do uruchomienia OpenGL na Windowsie. Maluje tylko okno na niebiesko, ale powinno wystarczyć, aby zacząć. Przykład można znaleźć pod adresem http://www.glinos-labs.org/?q=programming-opengl-csharp . Poszukaj przykładu No Wrapper na dole.
Poleciłbym również Tao Framework . Ale jeszcze jedna uwaga:
Spójrz na te samouczki: http://www.taumuon.co.uk/jabuka/
Co chciałbyś, aby zrobiły te biblioteki wsparcia? Samo używanie OpenGL z C # jest dość proste i nie wymaga żadnych dodatkowych bibliotek afaik.
Jeśli chodzi o (nieco poza tematem, który znam, ale ponieważ został omówiony wcześniej) wybór XNA vs OpenGL, w kilku przypadkach może być korzystne wybranie OpenGL zamiast XNA (aw innych XNA zamiast OpenGL ...).
Jeśli zamierzasz uruchamiać aplikacje w systemie Linux lub Mac przy użyciu Mono, dobrym wyborem może być OpenGL. Co więcej, co nie jest tak szeroko znane, jak sądzę, jeśli masz klientów, którzy będą uruchamiać twoje aplikacje w środowisku Citrix, to DirectX / Direct3D / XNA nie będzie tak ekonomicznym wyborem jak OpenGL. Powodem tego jest fakt, że aplikacje OpenGL mogą być współhostowane na mniejszej liczbie serwerów (ze względu na problemy z wydajnością pojedynczy serwer nie może obsługiwać nieskończonej liczby instancji aplikacji) niż aplikacje DirectX / XNA, które wymagają dedykowanych serwerów wirtualnych do działania sprzętowego tryb przyspieszony. Istnieją inne wymagania, takie jak obsługiwane karty graficzne itp., Ale będę trzymać się kwestii XNA vs OpenGL. Jako architekt IT, programista itp. Należy to wziąć pod uwagę przed wyborem między OpenGL i DirectX / XNA ...
Na marginesie jest to, że WebGL jest oparty na OpenGL ES3 afaik ...
Na marginesie, nie są to jedyne rozważania, ale niektórym mogą ułatwić wybór ...
XNA 2.0 wymaga co najmniej karty cieniującej 1.1. Chociaż stara technologia, nie każdy ją ma. Niektóre nowsze laptopy (z naszego doświadczenia tablety Toshiba z grafiką Intel) nie obsługują modułu cieniującego 1.1. XNA po prostu nie będzie działać na tych maszynach.
Jest to dla nas znaczący problem i przeszliśmy na Tao i OpenGL. Dodatkowo w Tao mamy wiązania do obsługi audio i Lua.