A platformok között átívelő, 2D és 3D támogatás kiaknázására egyaránt lehetőséget adó alkalmazásprogramozási interfész segítségével lehetőség nyílik a legmodernebb grafikus processzorokban rejlő lehetőségek maradéktalan kiaknázására - mindezt úgy, hogy az OpenGL 4.4 visszafelé teljesen kompatibilis marad a korábbi OpenGL változatokkal. Utóbbinak köszönhetően az alkalmazások fokozatosan kezdhetik el kihasználni az új szolgáltatásokban rejlő lehetőségeket a legkülönbözőbb grafikus hardverekkel, illetve a különböző operációs rendszerekkel karöltve. Az OpenGL 4.4 új funkcionalitást is kínál, amellyel egyszerűbbé válik az alkalmazások különböző API-k és platformok közötti átültetése.
Az OpenGL legfrissebb specifikációjának bejelentése mellett a Khronos Group azt is elújságolta, hogy az OpenGL ARB (Architecture Review Board) munkacsoport létrehozta az első csokornyi formális OpenGL megfelelőségi tesztet, amelyekkel driver-megfelelőségi tanúsítvány szerezhető OpenGL 3.3-tól felfelé. A teljes tanúsítvány megszerzése OpenGL 4.4-től felfelé kötelező lesz, amitől a Khronos Group szakemberei azt várják, hogy segít majd a különböző gyártók OpenGL eszközillesztő-szoftverei közötti különbségek csökkentésében.
Most pedig lássuk, milyen újításokat kínál az OpenGL 4.4-es specifikációja. Íme:
Buffer Placement Control (GL_ARB_buffer_storage)
Jelentősen javítja a memóriakezelés rugalmasságát és hatékonyságát azáltal, hogy a rendszermemóriában és a videó memóriában található bufferek pozíciói felett közvetlen kontrollt tesz lehetővé, méghozzá gyorsítótár-viselkedési kontrollal karöltve. Utóbbiba beletartozik az a lehetőség is, amelynek keretén belül a rendszer processzora közvetlen hozzáférésű buffert tud biztosítani a GPU számára.
Efficient Asynchronous Queries (GL_ARB_query_buffer_object)
A bufferben elhelyezkedő objektumok közvetlen célként használhatóak egy-egy lekérdezés alkalmával annak érdekében, hogy a CPU-nak ne kelljen várnia az eredményre és így ne rekedjen meg a grafikus futószalag. Ez a módszer jelentősen megnövekedett teljesítményt eredményez azoknál az alkalmazásoknál, amelyek rendszerint a későbbiekben kívánják felhasználni a GPU által elvégzett lekérdezések eredményeit.
Shader Variable Layout (GL_ARB_enhanced_layouts)
Részletes vezérlési lehetőség a shader interfész változóinak elhelyezkedése felett, beleértve a vektorok skalár típusokba történő hatékony csomagolásának lehetőségét is.
Efficient Multiple Object Binding (GL_ARB_multi_bind)
Új parancsok, amelyek lehetővé teszik az egyes alkalmazások számára, hogy több különálló parancs helyett egyetlen API hívás segítségével objektumcsoportokat kössenek össze vagy válasszanak szét, ami összességében jobb hatásfokhoz vezet. Az alkalmazások többségénél a központi renderelő ciklus gyakran köt össze különböző textúracsoportokat, mintázókat, képeket, vertex buffereket és egységes buffereket, így az új parancsokkal jelentősen csökkenthető a CPU overhead, és növelhető az összteljesítmény.
Hatékonyabb portolás a Direct3D alkalmazások esetében
Az új kiadás több olyan alapvető funkciót is kínál, amelyek hozzájárulnak, hogy a Direct3D-s alkalmazások és játékok portolása egyszerűbb legyen. Ebbe beletartozik a GL_ARB_buffer_storage, amely a buffer elhelyezés-vezérlésért felel, de rendelkezésre áll a GL_ARB_vertex_type_10f_11f_11f_rev is, amely egy olyan vertex adattípust hoz létre, ami három komponenset csomagol egy 32-bites értékbe, ezáltal növekszik a teljesítmény az alacsonyabb pontosságú csúcsok esetében. Rendelkezésre áll GL_ARB_texture_mirror_clamp_to_edge eljárás is, ami textúrakötési módot kínál - ilyet a Direct3D esetében is alkalmaznak.
Az OpenGL 4.4-es változatával két új kiterjesztés is érkezett, amelyek közül az egyik a Bindless Texture Extension (GL_ARB_bindless_texture) nevet viseli. Ez lehetővé teszi a shaderek számára, hogy azok effektíve végtelen számú textúra- és képforrást használjanak közvetlenül, virtuális címek alkalmazásával.
A másik kiterjesztés a Sparse Texture Extension (GL_ARB_sparse_texture) nevet kapta és lényege abban rejlik, hogy segítségével lehetővé válik olyan nagyméretű textúrák használata, amelyek nagyobbak, mint a GPU-hoz tartozó fizikai memória kapacitása. Ez úgy lehetséges, hogy az eljárás segítségével az alkalmazás kiválaszthatja az adott textúra azon régióit, amelyek a "mega-texture" algoritmusok számára szükségesek.
Aki mélyebben is szeretné magát beleásni a témába, itt bővebb információt is talál.