Zacznę od linku do wyjaśnienia, w jaki sposób działają wersje OpenGL . Krótko mówiąc, OpenGL (ogólnie) jest kompatybilny wstecz, więc cały kod GL 3 działa dobrze na implementacjach GL 4.
Seria wersji OpenGL 4.x reprezentuje to, co możesz nazwać sprzętem klasy „Direct3D 11”. Udostępnia funkcjonalność tego sprzętu. Sprzęt D3D10 jest reprezentowany przez wersje OpenGL 3.x. Zatem „przejście do openGL 4” oznacza porzucenie niższego sprzętu lub posiadanie wielu ścieżek renderowania.
Szczegółowy podział rzeczywistych zmian funkcji między 3.3 a 4.2 można znaleźć w specyfikacji 4.2 . Należy pamiętać, że wiele funkcji (oddzielne obiekty_shadera, język_cieniowania_420, paczka_ tekstury) nie są ograniczone do sprzętu 4.x; są to zmiany API i można uzyskać do nich dostęp na sprzęcie 3.x poprzez rozszerzenia.
Najistotniejsze pytanie brzmi: na co pozwala GL 4.x, że nie mogę tego zrobić ze sprzętem 3.x?
Tesselacja jest prawdopodobnie najbardziej znaną funkcją. Jest również prawdopodobnie najmniej użyteczna. Nie oznacza to, że jest bezużyteczny; właściwe użycie teselacji może poprawić szczegółowość modeli. Ale dla mnie przynajmniej nie jest to najlepsza rzecz, na jaką zmierza GL 4.
Podprogramy modułu cieniującego to ciekawy pomysł. Zasadniczo pozwala to na dynamiczne łączenie różnych fragmentów shaderów. Możesz mniej więcej dołączyć funkcję do określonego punktu wiązania w programie. Specyfikacja jest nieco trudna do przestrzegania, ale ma dobrą funkcjonalność.
Powiedziałbym, że ładowanie / przechowywanie obrazu jest prawdopodobnie najbardziej pomijanym, a jednocześnie najmocniejszym elementem GL 4. Dzięki niemu możesz wdrożyć przejrzystość niezależną od zamówienia o wydajności, która jest tak dobra, jak OIT. Prawdopodobnie istnieje wiele innych zastosowań ładowania / przechowywania obrazów, ale sprytniejsi ludzie je rozpoznają.
Istnieją pewne szanse i cele w GL 4. Rzeczy takie jak wsparcie podwójnej precyzji i renderowanie pośrednie. Są to bardziej rzeczy w stylu GPGPU, więc prawdopodobnie nie przydadzą się w grze.
Ale ogólnie GL 4 nie zmienia radykalnie sposobu implementacji funkcji X z GL 3.