#include <CGridPainter.h>
Die Klasse CGridPainter erlaubt es Vertexgitter mit Hilfe von OpenGL zu zeichnen. Dabei wird das CGrid -Objekt dazu verwendet, die Vertexdaten zu speichern. Das Zeichnen erfolgt über die Vertexarray-Extension von OpenGL. Die Klasse erlaubt es das Vertexgitter auf verschiedene Arten zu zeichnen.
Für alle Array-Typen von OpenGL (Vertex-, Color-, Normal-, TextureCoord- und Edgeflag -Array) können CGrid -Objekte spezifiziert werden. Lediglich auf das Farbindex-Array wurde verzichtet.
|
Die Enumeration enuPaintMode enthält alle Konstanten, die den Zeichenmodus der CGridPainter -Klasse steuern.
|
|
Der Standardkonstruktor initialisiert alle Gridzeiger mit NULL. Ferner werden alle Arrays deaktiviert. Die Linien- und Punktbreite wird auf 1.0 gesetzt. |
|
Die Funktion CheckGridMeasurements() überprüft, ob die Ausmaße des Grids objGrid mit den Ausmaßen der bisher zugewiesenen CGrid -Objekte übereinstimmen. Ist dies nicht der Fall, so gibt die Funktion false zurück. Stimmen die Ausmaße überein, oder wurden bis jetzt keine anderen CGrid -Objekte spezifiziert, so gibt die Funktion true zurück. |
|
Die Routine BuildIndexArray() erzeugt ein Index-Array, so dass der Aufruf von glDrawElementes() eine Vertexgitterzeile zeichnet. Der Parameter BaseIndex gibt den Startindex an. Insgesamt werden size * 2 Indizes erzeugt.
|
|
Die Routine SetupGLArrays initialisert die OpenGL-Vertexarray-Zeiger. Dabei wird über die useXXXGrid Flags ermittelt, welche Arrays benutzt werden sollen. Danach werden die Zeiger auf die Griddaten an OpenGL übergeben und das entsprechende Array in OpenGL aktiviert, allerdings nur dann, wenn auch tatsächlich ein Grid für ein aktiviertes Array vorliegt. Liegt kein Grid vor, so wird das entsprechende Array in OpenGL deaktiviert. |
|
Über den Parameter intVertexElements wird festgelegt, aus wievielen Komponenten ein Vertex besteht. Der Parameter enuVertexType gibt den OpenGL-Datentyp einer Komponente an.
|
|
Der Parameter enuNormalType gibt den OpenGL-Datentyp einer Normalenkomponente an.
|
|
Über den Parameter intColorElements wird festgelegt, aus wievielen Komponenten eine Farbe besteht. Der Parameter enuColorType gibt den OpenGL-Datentyp einer Farbkomponente an.
|
|
Über den Parameter intTexelElements wird festgelegt, aus wievielen Komponenten eine Texturkoordinate besteht. Der Parameter enuTexelType gibt den OpenGL-Datentyp einer Texelkoordinatenkomponente an.
|
|
Die Routine render() zeichnet das gesamte Vertexgitter unter Verwednung aller über die useXXXGrid -Flags aktivierten Grids, für die auch tatsächlich ein Zeiger auf ein \bCGrid -Objekt angegeben wurde. Die Art der Darstellung wird über die Klassenmember paintMode, pointSize und lineWidth gesteuert.
|
|
Die Methode render(int intX, int intY) zeichnet nur eine einzige Gitterzelle, welche über die Paramter intX und intY spezifiziert wurde. Es werden nur die über useXXXGrid -Flags aktivierten Grids, für die auch tatsächlich ein Zeiger auf ein \bCGrid -Objekt angegeben wurde, verwendet. Die Art der Darstellung wird über die Klassenmember paintMode, pointSize und lineWidth gesteuert.
|
|
Die Methode render(int intLeft, int intTop, int intWidth, int intHeight) zeichnet einen rechteckigen Auschnitt des Gitters. Die Parameter intLeft und intTop geben die Gitterzelle an, die die linke obere Ecke des Auschnitts darstellt. Die Parameter intWidth und intHeight legen die Breite und die Höhe des Auschnitts fest. Es werden nur die über useXXXGrid -Flags aktivierten Grids, für die auch tatsächlich ein Zeiger auf ein \bCGrid -Objekt angegeben wurde, verwendet. Die Art der Darstellung wird über die Klassenmember paintMode, pointSize und lineWidth gesteuert.
|