Wiem, że to bardzo stary wątek, ale Unity może Cię zainteresować
clabe45
Odpowiedzi:
129
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:
w przeciwieństwie do Tao, które po prostu odzwierciedla C API:
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
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.
Nie sądzę, aby te funkcje były zbyt reprezentatywne, ponieważ wszystkie są przestarzałe i usunięte z podstawowego profilu OpenGl.
Arne
6
To prawda, że te funkcje zostały usunięte z głównego profilu. Ale argumenty są nadal aktualne. „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”
Syaiful Nizam Yahya
1
Połączona witryna jest teraz nieprawidłowa dla tego postu.
Sonny Childs
16
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:
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.
@MegaByte Muszą być dostępne poprzez wywołanie platformy.
Limited Atonement
2
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.
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:
w przeciwieństwie do Tao, które po prostu odzwierciedla C API:
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.
źródło
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:
Niestety, musiałbyś to zrobić dla każdej wywoływanej funkcji OpenGL i jest to w zasadzie to, co zrobił dla ciebie Tao.
źródło
Tao ma być fajnym frameworkiem.
Z ich witryny:
źródło
SharpGL to projekt, który pozwala używać OpenGL w aplikacjach Windows Forms lub WPF.
źródło
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.
źródło
Poleciłbym również Tao Framework . Ale jeszcze jedna uwaga:
Spójrz na te samouczki: http://www.taumuon.co.uk/jabuka/
źródło
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.
źródło
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 ...
źródło
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.
źródło