Nee, niet eens dat.
Zo'n abstractie laag moet je meer zien als een stel macro's die een aantal standaard handelingen voor je verrichten. Elke engine heeft dat; sterker nog, vrijwel elke engine heeft meerdere abstractie lagen voor 3D, input, geluid. In een engine zoals Unity, die op zo'n beetje alles kan draaien (DX11, DX12, OpenGL, OpenGL ES, Vulkan, Apple Metal) zit er een abstractie laag voor elke API in. Beter nog, de meeste programmeurs hebben wel eens met een abstractie laag geprogrammeerd (of er zelf één geprogrammeerd). Of dat nu een 3D API is, jQuery voor veel web frontend ontwikkelaars of bijvoorbeeld een interface voor payment gateways voor web backend ontwikkelaars, het zijn en blijven abstractie lagen. In sommige gevallen is het een abstractie laag én utility library (jQuery bijvoorbeeld), maar de essentie blijft een abstractie laag.
Een (onrealistisch) voorbeeld is bijvoorbeeld het tekenen van een vierkant. De abstractie laag heeft dan gewoon een methode "drawSquare". Hoe je die methode aan roept is altijd hetzelfde, maar afhankelijk van welke abstractie je gebruikt, gebruiken ze intern allemaal andere API's zonder dat jij je code daarbij aan past.
Tegelijkertijd is dit ook de valkuil. Omdat je niet specifiek voor een API programmeert, kan het dus zijn dat je niet 100% optimaal bezig bent. Vrijwel alle games met DX12 tot nu toe hebben niet veel meer dan een abstractie laag voor DX12 die DX11 imiteert. Daarom zien we nog geen grote winsten met DX12.
Het is iets anders dan een framework, een framework dicteert namelijk hoe je je applicatie op zet. Een abstractie laag niet, die haalt alleen de flauwe dingen weg die je anders duizend keer opnieuw doet in je code.
VkHLF zit er ergens tussen in. Van wat ik gezien heb zit het vrij dicht op de API, maar ze geven je wel een framework (VkHLF - Vulkan High Level Framework) waarbij je je aan hun regels moet houden om geen performance te verliezen.
Of dit veel gebruikt gaat worden? Denk het niet. De grote engines zullen gewoon hun eigen laag hebben die binnen hun framework past, maar voor kleinere projecten kan dit wellicht wel aardig zijn
[
Voor 5% gewijzigd door
Werelds op 15-01-2017 13:27
]