Jaka jest różnica między OpenGL 1.x a 2.x?

13

Czy istnieje dobry samouczek, który pokazuje różnicę między OpenGL 1. * a 2. *?

Byłoby to bardzo pomocne, aby wiedzieć, jakie funkcje I powinna nie być wywołaniem (jak glBegin (), zakładam).

t123
źródło
1
Pozwól, że sformułuję twoje pytanie. Jaka jest różnica między renderowaniem funkcji stałych a modułami cieniującymi?
EnabrenTane 23.01.11
3
To jednak zupełnie inne pytanie.
Jari Komppa 24.01.11

Odpowiedzi:

11

Strona początkowa OpenGL.org zawiera przegląd z mnóstwem linków do różnych samouczków.

Krótko mówiąc, OpenGL 2.0 żyje między światem o stałej funkcji (1.x) a światem w pełni programowalnym (2.x +); nadal możesz używać wszystkiego, co ma OpenGL 1.x, dodając shadery. Idąc dalej (3.x +), wszelkiego rodzaju stare systemy o stałej funkcji zaczynają się jednak wycofywać, więc może być lepszy początek niż mieszanie obu światów.

Dziwi mnie też to, że wcześniej o to nie pytano ... a przynajmniej nie mogłem go znaleźć podczas szybkiego wyszukiwania.

Jari Komppa
źródło
Nie mogę znaleźć samouczka dla konkretnej wersji. (z wyjątkiem 3.0)
t123
Na tej stronie znajduje się wiele linków, w „Samouczkach i przewodnikach”, ale w zasadzie masz wybór między OpenGL 1.x a „czymkolwiek innym”.
Jari Komppa,
@ tm1rbrt: Nie znajdziesz konkretnych samouczków dla 2.1, ponieważ wszystkie ważne samouczki 1.x są nadal ważne samouczki 2.1. Jedynym powodem przerwy w wersji 3.x jest to, że właśnie tam usunięto interfejsy API. Jeśli szukasz samouczków opartych na module cieniującym 2.1, samouczki lighthouse3d są przydatne. Jednak należy pamiętać, że sprzęt 3.x istnieje już od 2006 roku i nawet teraz jest wbudowany w płyty główne, a nawet procesory. Więc przyszłość nie jest w świecie 2.x; przyszłe samouczki będą ogólnie dotyczyły wersji 3.xi nowszych.
Nicol Bolas,
3

Ogólnie rzecz biorąc, wersje OpenGL nie są podobne do wersji Direct3D. Twój stary kod nadal działa z nowymi wersjami (z jednym wyjątkiem). Dlatego OpenGL v1.4 będzie działał dobrze w OpenGL 2.1. Wersje OpenGL to dodatki, a nie odejmowania.

OpenGL 2.0 i 2.1 dodają shadery w języku OpenGL Shading. Dodają także kilka innych funkcji, takich jak tekstury zmiennoprzecinkowe, tekstury bez potęgi dwóch i tak dalej. Pełna lista jest dostępna w samej specyfikacji OpenGL 2.1 . Wystarczy spojrzeć na sekcje „Wersja”; powiedzą ci, co zmieniło się od poprzedniej wersji.

Jedynym wyjątkiem od reguły dotyczącej zmian interfejsu API jest OpenGL 3.1 (tak, 3.1, a nie 3.0). W OpenGL 3.0 wiele interfejsów API oznaczono jako „przestarzałe”. Oznacza to, że ARB, komitet odpowiedzialny za OpenGL, może usunąć te funkcje z późniejszych wersji. To usunięcie miało miejsce w OpenGL 3.1. Specyfikacja 3.0 zawiera dużą listę przestarzałych elementów, a specyfikacja 3.1 jest odpowiednio zmniejszona.

Pamiętaj, że nie musisz się tym przejmować (przynajmniej w systemie Windows i Linux. MacOSX jest inny). Możesz działać dobrze w trybie „ zgodności ”, w którym wracają wszystkie wcześniej usunięte funkcje. Implementacje OpenGL nie muszą obsługiwać kontekstów kompatybilności (a Mac OS X Lion nie. Obsługuje rdzeń 2.1 lub 3.2, na twoje życzenie), ale wszystkie nadal tak robią. Tylko dla kompatybilności wstecznej ze starszymi aplikacjami.

Nicol Bolas
źródło
Czy możesz dodać coś o OpenGL 4. *?
Kromster
@Krom: Nie ma wiele do powiedzenia. Podobnie jak przejście z wersji 1.x na 2.x nic nie zostało usunięte.
Nicol Bolas,
0

Uważam, że istnieją samouczki dla Opengl 1.x i 2.x, ale najprawdopodobniej nie będzie samouczków pokazujących, jak różnią się one funkcjami lub łatwością użycia itp.

Najlepiej jest wyszukać samouczki dla konkretnej wersji Opengl, znaleźć podobne samouczki i porównać je sam.

LizardGamer
źródło
Poważnie, kto losowo odrzuca moje komentarze?
LizardGamer
Dlaczego opinie są tutaj? Nie świetna odpowiedź, ale głosy negatywne? Niepewny. Pytanie naprawdę chce czegoś niezbyt zwyczajnego ... Samouczek pokazujący różnice, to w większości nie to, co samouczki ...
Notabene
@LizardGamer Widzę, że dołączyłeś do gamedev.SE kilka dni temu, więc chciałbym powiedzieć „Witaj!”. Jednak naprawdę powinieneś przeczytać tutaj FAQ: gamedev.stackexchange.com/faq Ta odpowiedź jest doskonałym przykładem odpowiedzi, której NIE chcesz udzielić. Staraj się być bardziej konkretny i zdecydowanie bardziej konstruktywny, zarówno z pytaniami, jak i odpowiedziami. Często zadawane pytania powinny pomóc Ci zrozumieć cel tej witryny i rodzaj treści, których szukamy. Powodzenia!
Amplify91
@notabene ta odpowiedź tak naprawdę nie odpowiada na pytanie. Jedyną sugestią, jaką daje, jest „poszukiwanie odpowiedzi”. Oczywiście OP już to robi, zadając tutaj pytanie.
Amplify91
@ Amplify91 Dziękuję za jedyne powitanie, jakie mam, i już przeczytałem FAQ, nie wiem, jak to jest przykład, o co nie pytać? Dodatkowo odpowiada na pytanie, ponieważ nie widziałem żadnych samouczków związanych z porównywaniem wersji opengl
LizardGamer