Main Page   Modules   Class Hierarchy   Compound List   File List   Compound Members   File Members   Related Pages  

CGridPainter Class Reference

Klasse zum Zeichnen von in CGrid -Objekten abgelegten Vertexgittern mittels OpenGL. More...

#include <CGridPainter.h>

List of all members.

Public Types

Public Methods

Public Attributes

Protected Methods

Protected Attributes


Detailed Description

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.

Note:
Alle verwendeten Grids müssen dieselben Ausmaße aufweisen, d.h. dieselbe Anzahl an Spalten und dieselbe Anzahl and Zeilen.


Member Enumeration Documentation

enum CGridPainter::enuPaintMode
 

Die Enumeration enuPaintMode enthält alle Konstanten, die den Zeichenmodus der CGridPainter -Klasse steuern.

Enumeration values:
pmSolid   Das Vertexgitter wird als eine Ansammlung von Trianglestrips gezeichnet. Die Dreiecke werden gefüllt.
pmWireframe   Das Vertexgitter wird als eine Ansammlung von vertikalen und horizontalen Linien gezeichnet. Die Linienbreite kann über lineWidth spezifiziert werden.
pmPoints   Das Vertexgitter wird als eine Ansammlung von Punkten gezeichnet. Die Punktgröße kann über pointSize spezifiziert werden.


Constructor & Destructor Documentation

CGridPainter::CGridPainter ( )
 

Der Standardkonstruktor initialisiert alle Gridzeiger mit NULL. Ferner werden alle Arrays deaktiviert. Die Linien- und Punktbreite wird auf 1.0 gesetzt.


Member Function Documentation

bool CGridPainter::CheckGridMeasurements ( CAbstractGrid * objGrid ) [protected]
 

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.

void CGridPainter::BuildIndexArray ( int BaseIndex,
int Size ) [protected, virtual]
 

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.

Remarks:
Die lineare Reihenfolge der Daten innerhalb eines CGrid -Objekts stimmt nicht mit der von OpenGL vorgeschriebenen Definitionsreihenfolge für Quad- und Dreiecksprimitive. Deswegen muss zusätzlich ein Indexarray erzeugt werden, welches die richtige Reihenfolge herstellt.

void CGridPainter::SetupGLArrays ( ) [protected]
 

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.

void CGridPainter::setVertexGrid ( CAbstractGrid * objVertexGrid,
int intVertexElements = 0,
GLenum enuVertexType = 0 )
 

Über den Parameter intVertexElements wird festgelegt, aus wievielen Komponenten ein Vertex besteht. Der Parameter enuVertexType gibt den OpenGL-Datentyp einer Komponente an.

Note:
Die Ausmaße des zuzuweisenden Gitters müssen mit den Ausmaßen der bereits festgelegten Gitter übereinstimmen. Ist dies nicht der Fall, so wird eine Exception vom Typ invalid_argument ausgelöst.

void CGridPainter::setNormalGrid ( CAbstractGrid * objNormalGrid,
GLenum enuNormalType = 0 )
 

Der Parameter enuNormalType gibt den OpenGL-Datentyp einer Normalenkomponente an.

Note:
Es wird davon ausgegangen, dass ein Normalenvektor aus drei Kompontenten besteht.

Note:
Die Ausmaße des zuzuweisenden Gitters müssen mit den Ausmaßen der bereits festgelegten Gitter übereinstimmen. Ist dies nicht der Fall, so wird eine Exception vom Typ invalid_argument ausgelöst.

void CGridPainter::setColorGrid ( CAbstractGrid * objColorGrid,
int intColorElements = 0,
GLenum enuColorType = 0 )
 

Über den Parameter intColorElements wird festgelegt, aus wievielen Komponenten eine Farbe besteht. Der Parameter enuColorType gibt den OpenGL-Datentyp einer Farbkomponente an.

Note:
Die Ausmaße des zuzuweisenden Gitters müssen mit den Ausmaßen der bereits festgelegten Gitter übereinstimmen. Ist dies nicht der Fall, so wird eine Exception vom Typ invalid_argument ausgelöst.

void CGridPainter::setTexelGrid ( CAbstractGrid * objTexelGrid,
int intTexelElements = 0,
GLenum enuTexelType = 0 )
 

Über den Parameter intTexelElements wird festgelegt, aus wievielen Komponenten eine Texturkoordinate besteht. Der Parameter enuTexelType gibt den OpenGL-Datentyp einer Texelkoordinatenkomponente an.

Note:
Die Ausmaße des zuzuweisenden Gitters müssen mit den Ausmaßen der bereits festgelegten Gitter übereinstimmen. Ist dies nicht der Fall, so wird eine Exception vom Typ invalid_argument ausgelöst.

void CGridPainter::render ( ) [virtual]
 

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.

Note:
Es wird nur dann etwas gezeichnet, wenn ein Zeiger auf ein Vertex-Grid zuvor spezifiziert, und das Vertexgrid mittels useVertexGrid aktiviert wurde.

void CGridPainter::render ( int intX,
int intY ) [virtual]
 

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.

Note:
Es wird nur dann etwas gezeichnet, wenn ein Zeiger auf ein Vertex-Grid zuvor spezifiziert, und das Vertexgrid mittels useVertexGrid aktiviert wurde.

void CGridPainter::render ( int intLeft,
int intTop,
int intWidth,
int intHeight ) [virtual]
 

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.

Note:
Es wird nur dann etwas gezeichnet, wenn ein Zeiger auf ein Vertex-Grid zuvor spezifiziert, und das Vertexgrid mittels useVertexGrid aktiviert wurde.


The documentation for this class was generated from the following files:
Generated at Fri Apr 19 16:53:06 2002 for GLFramework by doxygen1.2.6 written by Dimitri van Heesch, © 1997-2001