Jakie są różne typy rozszerzeń OpenGL®?

Istnieje wiele różnych rozszerzeń OpenGL®, używanych głównie do pomocy w zarządzaniu i utrzymywaniu uporządkowanej struktury bibliotek OpenGL®. Istnieją cztery główne typy rozszerzeń OpenGL®: dostawca, zatwierdzone, ogólne i podstawowe. Zatwierdzone, ogólne i podstawowe rozszerzenia oznaczają funkcje i biblioteki, które w pewien sposób zmierzają w kierunku dołączenia do ogólnej dystrybucji pakietu programistycznego OpenGL®. Rozszerzenia dostawcy to niestandardowe funkcje, które mają zastosowanie do określonych środowisk sprzętowych lub programowych. Istnieje kilka innych typów, ale służą one raczej do podklasyfikacji wielu istniejących rozszerzeń.

Jednym z powodów, dla których istnieją różne typy rozszerzeń OpenGL®, jest powszechne stosowanie podstawowych bibliotek i potencjalnie myląca ilość zastrzeżonego kodu tworzonego w celu jego rozszerzenia. Platforma OpenGL® Architecture Review Board (ARB) pomaga w utrzymaniu i egzekwowaniu standardu OpenGL® oraz zarządzaniu rozszerzeniami. Wiele rozszerzeń zaczyna się jako rozszerzenia dostawców lub rozszerzenia wszechobecne i z czasem mogą być używane przez wielu dostawców, zdobywając tytuł rozszerzenia ogólnego. Rozszerzenia ogólne mogą być następnie sprawdzane przez ARB i stają się rozszerzeniami zatwierdzonymi przez ARB, które najprawdopodobniej dołączą do rozszerzeń podstawowych.

Rozszerzenia OpenGL® dostawcy to funkcje implementowane przez producentów sprzętu graficznego lub systemów operacyjnych. Rozszerzenia tego typu umożliwiają producentowi ulepszenie lub wprowadzenie nowych funkcji do wydajności grafiki, a następnie udostępnienie tych ulepszeń programom OpenGL®. Wszystkie rozszerzenia dostawcy zaczynają się od kodu przypisanego przez ARB, który reprezentuje nazwę producenta, wskazując środowisko, w którym funkcja może być dostępna.

Ogólne rozszerzenia OpenGL® to funkcje, które były używane i wdrażane przez wielu producentów i nie muszą już być oznaczane specjalnymi kodami prefiksów dostawców. Nie wszystkie ogólne rozszerzenia muszą być zaimplementowane, aby zachować zgodność ze standardem OpenGL®. Ogólne rozszerzenie używa przedrostka GL_EXT przed nazwą funkcji lub stałej.

Zatwierdzone rozszerzenia OpenGL® to te, które zostały przyjęte przez więcej niż jednego producenta i zostały sprawdzone przez ARB, co pozwoliło im stać się częścią normalnej biblioteki OpenGL®. Funkcje tego typu są zazwyczaj wdrażane przez wszystkich producentów, niezależnie od tego, który dostawca faktycznie wynalazł rozszerzenie i niezależnie od tego, czy inni dostawcy mają sprzęt, który może obsługiwać żądane funkcje. Ten typ rozszerzenia zawiera przedrostek GL_ARB.

Rozszerzenia Core OpenGL® to funkcje, które są w stanie zwiększyć wydajność starszych programów, umożliwiając wywołanie poprzednich wersji funkcji OpenGL® w celu wykonania najnowszego kodu. W miarę wydawania nowych wersji OpenGL® nowe rozszerzenia rdzenia można bezproblemowo wywoływać ze starszego programu bez konieczności zmiany kodu źródłowego. Pomimo wygody poprawy wstecznej kompatybilności, podstawowe rozszerzenia OpenGL® wciąż mogą być z czasem deprecjonowane.