2011-11-08 18 views
9

Powiel możliwe:
OpenGL 4.1 vs 3.1+Różnica między OpenGL 3.x i 4.X?

przeczytaniu niektórych stron w internecie, znalazłem te same przykłady kodu podane dla obu wersji OpneGL. Wiem, że dwa używają programowalnych potoków funkcji, w przeciwieństwie do wcześniejszych wersji, ale jakie są główne różnice między tymi dwoma? Dlaczego używałbyś jednego nad drugim?

Odpowiedz

36

Główne numery wersji OpenGL skutecznie reprezentują poziomy sprzętowe, takie jak główne numery wersji D3D. GL 2.x reprezentuje sprzęt DX9. GL 3.x reprezentuje sprzęt klasy DX10. I dlatego GL 4.x reprezentuje sprzęt klasy DX11.

Nie wszystkie funkcje wprowadzone w GL 4.x są jednak specyficzne dla sprzętu. Niektóre z nich to funkcje wygody i czyszczenia API. Są one dostępne jako rozszerzenia do niższego poziomu sprzętu, a sterowniki z kart NVIDIA i AMD zapewniają je. Największy z nich to program separation, który jest czymś, czego GLSL potrzebował dla czasu długiego.

Pod względem rzeczywistych cech sprzętowych przedstawionych przez GL 4.x, które nie są dostępne w wersji 3.x, nie jest to zbyt duże lub zmieniające się gry. Jest to z pewnością znaczące, ale nie poruszające. Szczegółowy podział funkcji GL można znaleźć w wersji na OpenGL Wiki.

Image load/store i atomic counters są prawdopodobnie największymi (dotyczy to również shader storage buffers), choć jednocześnie najmniej reklamowane. Shadery uzyskują bezpośredni zapis/odczyt z obrazów i buforów, ale są na to a lot of caveats and synchronization issues to understand.

GL 4.3 dodano compute shaders, co w połączeniu z powyższym pozwala wykonywać zadania obliczeniowe bez bólu interakcji OpenCL/OpenGL.

Cechą, o której mówi się najwięcej, jest tessellation. Wprowadza to dodatkową parę etapów cieniowania: jeden, który decyduje o tessellacji prymitywów, a drugi decyduje, jak wygenerować nowe wartości z teselowanego prymitywu.

Subroutines są interesującą, ale często pomijaną funkcją. Zasadniczo można dołączyć podprogramy do programów cieniujących, takich jak mundury. Więc możesz użyć tego samego podstawowego programu, który uruchomi funkcję oświetlenia, ale możesz zamienić funkcje oświetlenia bez zmiany programu. Podstawowy program będzie pobierał tekstury, określał, jakie są parametry materiału rozproszonego/wziernika/etc, określa parametry normalne i parametry oświetlenia i przekazuje je do podprogramu. Mógłbyś mieć wiele różnych podprogramów oświetleniowych, od szybkiego i prostego Lambertowskiego rozproszonego po pełny Cook-Torrance (chociaż potrzebujesz więcej parametrów materiałowych).

+2

Ta odpowiedź zasługuje na więcej niż + 5 ^^. Twoja książka na OpenGL jest naprawdę świetna, nawet jeśli nawigacja jest taka sobie. – Korchkidu

+0

@Korchkidu: jaką książkę? – ssc

+0

Czy oprócz zmian wewnętrznych, czy mogę zobaczyć różnicę? Na przykład, kiedy dokładnie przyglądam się grze lub demo 3D, czy te zmiany powodują coś, co lepiej? – ssc

Powiązane problemy