Dat OpenGL 3.0 baanbrekend wordt(check ook vorige
OpenGL 3 post) is al lang duidelijk. Maar nu is er eindelijk ook wat meer duidelijkheid over op welke fronten OpenGL 3.0 baanbrekend wordt.
Ten eerste wordt het object-oriented. Echt OOP wordt het natuurlijk niet, aangezien OpenGL 3.0 compatible met C moet blijven. Maar in OpenGL 3.0 worden template-objecten geintroduceerd. Die template-objecten zijn eigenlijk gewoon C-structs die properties bevatten. In plaats van een functie aan te roepen met een berg met arguments(zoals dat nu het geval is), wat de duidelijk van je code niet echt ten goede komt, genereer je bij OpenGL 3.0 gewoon een template-object waarbij je de properties invult.
Een andere opmerkelijke nieuwe data-type zijn container-objects. Dit zijn objecten waarmee je geometrische data(bijvoorbeeld vertices of normals) aan OpenGL kunt geven.
Natuurlijk zijn er ook verbeteringen op het shader gebied. Zo heb je nu niet meer een fixed pipeline, maar bestaat de hele pipeline uit shaders. Dit betekent dat je in principe je de hele pipeline kunt herprogrammeren(zodra videokaarten dit ook ondersteunen).
Behalve dat OpenGL 3.0 code duidelijker maakt, zal door het nieuwe (semi-OOP) design de performance als het goed is ook toenemen. En hoewel er vrij radicale dingen in OpenGL 3.0 gaan veranderen schijnt OpenGL 3.0 nog steeds backwards compatible te zijn met oudere versie's.
Comments
Post new comment