…transformaties…
De kern van deze stap in de graphics pipeline is het transformeren ofwel omzetten van de data die door de processor naar de GPU is gestuurd. Een transformatie is de berekening van hoe de scène, die in de vorige stap gedefinieerd is, eruit ziet vanuit één bepaald gezichtspunt, namelijk dat wat zichtbaar is op het beeldscherm. De data die hiervoor als basis dient bestaat uit de coördinaten van de 3D-wereld, zoals gezegd aangeleverd door de processor. Er zijn vier coördinaten die verwerkt moeten worden: breedte (x), hoogte (y), diepte (z) en ‘gewicht’ (w) – de laatste ‘coördinaat’ is als schalingsfactor voor de perspectiefcorrectie belangrijk voor het totstandkomen van een realistische dieptewerking in het uiteindelijke beeld.
Elke wijziging in de 3D-wereld of van objecten daarin komt neer op – een combinatie van – de volgende bewerkingen: verplaatsing in een lijn (translatie), kantelen of draaien (rotatie) en verandering van vorm, bijvoorbeeld groter of kleiner worden (schaling). Voor ieder van deze wijzigingen is een zogenaamde matrixberekening nodig. Deze matrixberekeningen worden gecombineerd in een transformatiematrix die vervolgens vermenigvuldigd wordt met de door de processor aangeleverde coördinaten – het is deze transformatiematrix die bij DirectX 7 ondersteunende videokaarten is ‘ingebakken’. De uitkomst van de berekening die hiermee wordt uitgevoerd resulteert in de vertices die de basis vormen van de 3D-wereld zoals die op het scherm zal worden weergegeven. In figuur 9 is de matrixberekening te zien.
Voor iedere vertex is een beetje geheugen nodig om de positie ervan vast te leggen. In de praktijk worden 3 of 4 bytes per coördinaat gebruikt. Zo neemt de positie van één hoekpunt in ieder geval 9 bytes in het geheugen van de videokaart in. Voor een driehoek zijn dan al 27 bytes benodigd. Straks zullen we zien dat per vertex nog meer gegevens nodig zijn om uiteindelijk een realistisch beeld te produceren.

Figuur 9: de transformation matrixberekening.