Inizierò questo collegando a una spiegazione di come funzionano le versioni di OpenGL . In breve, OpenGL (generalmente) è retrocompatibile, quindi tutto il codice GL 3 funziona perfettamente con le implementazioni GL 4.
La serie 4.x di versioni OpenGL rappresenta quello che potresti chiamare hardware di classe "Direct3D 11". Espone le funzionalità di quell'hardware. L'hardware D3D10 è rappresentato dalle versioni 3.x di OpenGL. Quindi "passare a openGL 4" significa abbandonare l'hardware inferiore o avere più percorsi di rendering.
Una suddivisione dettagliata delle effettive modifiche della funzione tra 3.3 e 4.2 è disponibile nella specifica 4.2 . Si noti che molte funzioni (separate_shader_objects, shading_language_420pack, texture_storage) non sono limitate all'hardware 4.x; sono modifiche API e puoi accedervi su hardware 3.x tramite estensioni.
La domanda più saliente è questa: cosa mi consente GL 4.x di non poterlo fare con l'hardware 3.x?
La tessellazione è probabilmente la caratteristica più nota. Probabilmente è anche il meno generalmente utile. Questo non vuol dire che è inutile; l'uso corretto della tassellatura può migliorare i dettagli nei modelli. Ma almeno per me, non è proprio la cosa migliore che GL 4 abbia da offrire.
Le subroutine di shader sono un'idea interessante. Questo in sostanza ti consente di riunire dinamicamente diversi frammenti di shader. È possibile associare più o meno una funzione a un punto di associazione specifico in un programma. Le specifiche sono un po 'difficili da seguire, ma sono buone funzionalità.
Direi che il caricamento / archiviazione delle immagini è probabilmente la funzionalità GL 4 più trascurata e tuttavia più potente. Con esso, hai la capacità di implementare la trasparenza indipendente dall'ordine con prestazioni buone quanto l'OIT sta per ottenere. Probabilmente ci sono molti altri usi per caricare / archiviare immagini, ma ci vorranno persone più intelligenti per capirli.
Ci sono alcune probabilità e estremità in GL 4. Roba come supporto a doppia precisione e rendering indiretto. Queste sono più cose in stile GPGPU, quindi probabilmente non saranno molto utili in un gioco.
Ma in generale GL 4 non cambia radicalmente il modo in cui implementate la funzione X da GL 3.