|
libsren definiert die Schnittstelle zu den konkreten Implementierungen
der "Rasterer" durch die abstrakte Klasse engine.
|
|
Alle Raster-Klassen verwenden ein gemeinsames Bildmodell: Sie rastern in einen Bildpuffer der Breite
width und Höhe height (die Bildbreite muß ein Vielfaches
von 4 sein). Jeder Bildpunkt trägt 32 Bit Information. Die Bildpunkte im Puffer sind zeilenweise
angeordnet. Der Koordinatenursprung liegt in der Bildmitte.
|
|
Die 3D Implementierungen der Raster-Klassen verwenden zusätzlich zum Bildpuffer einen
Z-Puffer, in dem die "Tiefeninformation" jedes Bildpunktes mit 16 Bit Auflösung gespeichert wird.
|
|
Der Speicher für den Bildpuffer, sowie einen evtl. benötigten Z-Puffer, wird durch
die Raster-Klasse allokiert oder von außen bereitgestellt. Das Format eines Bildpunktes
ist der Rasterklasse unbekannt. Sie füllt Bildpunkte mit einem vorgegebenen Wert, dessen
Bedeutung vom jeweiligen Betriebssystem bestimmt wird.
|
|
Optional kann der Rasterklasse ein "Shader" mitgegeben werden, der den Farb- bzw. Intensitätswert
eines Bildpunktes verändert. Ein solcher "Shader" muss die Bedeutung einzelner Bits im Bildpunkt
kenn, ist also im Unterschied zur Raster-Klasse nicht unabhängig vom Betriebssystem.
libsren stellt einen Shader für Windows RGB Format zur Verfügung.
|
|
Die typische Benutzung der Raster-Klassen besteht aus den Schritten:
|
|
· Initialisierung
|
|
· Rastern von Grafikprimitiven in den Bildpuffer
|
|
· Darstellung des Bildpuffers
|