Implementiert die Renderlogik, Renderloop und Laden der Texturen. More...
Public Member Functions | |
Renderlogic (CSGL12Control Control, System.Drawing.Color ClearColor) | |
Der Konstruktor. | |
void | init () |
Konfiguriert OpenGL und lädt die Shader und FBOs. | |
void | loadTextureFile (string FileName) |
Instanziert die Volumendaten aus der angegebenen Datei, übergibt sie dem TransferModifier, und bereitet die Texturen und die Ansicht vor. | |
void | reload1dTexture () |
Läd die Transfer Textur (neu) auf die Grafikkarte. | |
void | switchView (int value) |
Setzt die gewünschte Ansicht (Top=0, Front=1, Side=2) | |
void | setFlipX (bool value) |
Setzt die Umkehrung der X Achse (ein=true, aus=false) | |
void | setFlipY (bool value) |
Setzt die Umkehrung der Y Achse (ein=true, aus=false) | |
void | setFlipZ (bool value) |
Setzt die Umkehrung der Z Achse (ein=true, aus=false) | |
void | setAutoSlicing (bool value) |
De-/aktiviert das automatische Slicing des Volumens (ein=true, aus=false) | |
int | getSlicingRange () |
Liefert die Ausdehnung des Volumens für die aktive Slicing-Achse. | |
void | setSlicingPosition (float value) |
Setzt die gewünschte Slicing-Position. | |
float | getSlicingPosition () |
Gibt die Slicing-Position zurück, welche zwischen 0 und 1 liegt. | |
void | controlViewAngle (int x, int y) |
Ändert die Würfelrotation anhand der übergebenen x und y Position der Maus. | |
void | controlZoom (int value) |
Ändert die die Ansichtsgröße des RGB Würfels anhand des übergebenen Werts. | |
void | mouseButtonRightReleased () |
Reset der Zoomänderung. Setzt den alten Wert für die Mausposition der Zoomopeartion auf 0. | |
void | mouseButtonLeftReleased () |
Reset der Rotationsänderung. Setzt die alten Werte für die Mausposition der Würfel Rotation auf 0 und leftClick auf false. | |
void | mouseButtonLeftClicked (int x, int y) |
Setzt die alten Werte für die Mausposition der Würfel Rotation und leftClick auf true. | |
void | setShader (int id) |
Setzt anhand der ShaderId welcher Shader für die 3D Darstellung verwendet werden soll. | |
void | setXSwitch (bool value) |
De-/Aktiviert die Umkehrung der Mausposition x (ein=true, aus=false) | |
void | setYSwitch (bool value) |
De-/Aktiviert die Umkehrung der Mausposition y (ein=true, aus=false) | |
void | setInterpolation (bool value) |
De-/Aktiviert die Lineare Interpolation der Volumen Daten (ein=true, aus=false) | |
void | paint () |
Der Renderloop. | |
void | sizeChanged () |
void | render3D (Shader shader) |
3D Rendering (Ray-Casting): Hierbei wird ein RGB Würfel gezeichnet. Einmal die Backfaces in ein FBO und dann die Frontfaces in ein zweites. Diese beiden FBOs werden dann als Input für einen Raycasting Shader benutzt welcher die Ausgabe auf ein Screenquad zeichnet. | |
void | renderAxisView () |
Hier wird ein Quad gezeichnet und mittels Anpassung der Texturkoordinaten (je nach Ansicht und Slicing-Position) das Volumen gerendert. Der Viewport und die Orthogonal-Matrix werden je nach Fenstergröße angepasst und sofern aktiviert wird die Slicing-Position automatisch verschoben. | |
Static Public Member Functions | |
static void | getError (GL gl) |
Prüft auf einen OpenGL Error und gibt diesen gegebenenfalls aus. |
Implementiert die Renderlogik, Renderloop und Laden der Texturen.
Vislucsgl::Renderlogic::Renderlogic | ( | CSGL12Control | Control, |
System.Drawing.Color | ClearColor | ||
) | [inline] |
Der Konstruktor.
Control | das OpenGL Control Objekt |
ClearColor | die Farbe mit welchem der OpenGL Hintergrund gefüllt werden soll |
void Vislucsgl::Renderlogic::controlViewAngle | ( | int | x, |
int | y | ||
) | [inline] |
Ändert die Würfelrotation anhand der übergebenen x und y Position der Maus.
x | die x Koordinate der Maus |
y | die y Koordinate der Maus |
void Vislucsgl::Renderlogic::controlZoom | ( | int | value ) | [inline] |
Ändert die die Ansichtsgröße des RGB Würfels anhand des übergebenen Werts.
value | die entsprechende Mausposition |
static void Vislucsgl::Renderlogic::getError | ( | GL | gl ) | [inline, static] |
Prüft auf einen OpenGL Error und gibt diesen gegebenenfalls aus.
gl | das Objekt welches die Schnittstelle zu OpenGL bereitstellt |
float Vislucsgl::Renderlogic::getSlicingPosition | ( | ) | [inline] |
Gibt die Slicing-Position zurück, welche zwischen 0 und 1 liegt.
int Vislucsgl::Renderlogic::getSlicingRange | ( | ) | [inline] |
Liefert die Ausdehnung des Volumens für die aktive Slicing-Achse.
void Vislucsgl::Renderlogic::init | ( | ) | [inline] |
Konfiguriert OpenGL und lädt die Shader und FBOs.
void Vislucsgl::Renderlogic::loadTextureFile | ( | string | FileName ) | [inline] |
Instanziert die Volumendaten aus der angegebenen Datei, übergibt sie dem TransferModifier, und bereitet die Texturen und die Ansicht vor.
FileName | die Datei mit den Volumendaten |
void Vislucsgl::Renderlogic::mouseButtonLeftClicked | ( | int | x, |
int | y | ||
) | [inline] |
Setzt die alten Werte für die Mausposition der Würfel Rotation und leftClick auf true.
x | die x Koordinate der Maus |
y | die y Koordinate der Maus |
void Vislucsgl::Renderlogic::mouseButtonLeftReleased | ( | ) | [inline] |
Reset der Rotationsänderung. Setzt die alten Werte für die Mausposition der Würfel Rotation auf 0 und leftClick auf false.
void Vislucsgl::Renderlogic::mouseButtonRightReleased | ( | ) | [inline] |
Reset der Zoomänderung. Setzt den alten Wert für die Mausposition der Zoomopeartion auf 0.
void Vislucsgl::Renderlogic::paint | ( | ) | [inline] |
Der Renderloop.
void Vislucsgl::Renderlogic::reload1dTexture | ( | ) | [inline] |
Läd die Transfer Textur (neu) auf die Grafikkarte.
void Vislucsgl::Renderlogic::render3D | ( | Shader | shader ) | [inline] |
3D Rendering (Ray-Casting): Hierbei wird ein RGB Würfel gezeichnet. Einmal die Backfaces in ein FBO und dann die Frontfaces in ein zweites. Diese beiden FBOs werden dann als Input für einen Raycasting Shader benutzt welcher die Ausgabe auf ein Screenquad zeichnet.
void Vislucsgl::Renderlogic::renderAxisView | ( | ) | [inline] |
Hier wird ein Quad gezeichnet und mittels Anpassung der Texturkoordinaten (je nach Ansicht und Slicing-Position) das Volumen gerendert. Der Viewport und die Orthogonal-Matrix werden je nach Fenstergröße angepasst und sofern aktiviert wird die Slicing-Position automatisch verschoben.
void Vislucsgl::Renderlogic::setAutoSlicing | ( | bool | value ) | [inline] |
De-/aktiviert das automatische Slicing des Volumens (ein=true, aus=false)
value | der Wahrheitswert für den gewünschten Zustand |
void Vislucsgl::Renderlogic::setFlipX | ( | bool | value ) | [inline] |
Setzt die Umkehrung der X Achse (ein=true, aus=false)
value | der Wahrheitswert für den gewünschten Zustand |
void Vislucsgl::Renderlogic::setFlipY | ( | bool | value ) | [inline] |
Setzt die Umkehrung der Y Achse (ein=true, aus=false)
value | der Wahrheitswert für den gewünschten Zustand |
void Vislucsgl::Renderlogic::setFlipZ | ( | bool | value ) | [inline] |
Setzt die Umkehrung der Z Achse (ein=true, aus=false)
value | der Wahrheitswert für den gewünschten Zustand |
void Vislucsgl::Renderlogic::setInterpolation | ( | bool | value ) | [inline] |
De-/Aktiviert die Lineare Interpolation der Volumen Daten (ein=true, aus=false)
value | der Wahrheitswert für den gewünschten Zustand |
void Vislucsgl::Renderlogic::setShader | ( | int | id ) | [inline] |
Setzt anhand der ShaderId welcher Shader für die 3D Darstellung verwendet werden soll.
id | die ShaderId |
void Vislucsgl::Renderlogic::setSlicingPosition | ( | float | value ) | [inline] |
Setzt die gewünschte Slicing-Position.
value | der Wert für die gewünschte Position, muss zwischen 0 und 1 sein |
void Vislucsgl::Renderlogic::setXSwitch | ( | bool | value ) | [inline] |
De-/Aktiviert die Umkehrung der Mausposition x (ein=true, aus=false)
value | der Wahrheitswert für den gewünschten Zustand |
void Vislucsgl::Renderlogic::setYSwitch | ( | bool | value ) | [inline] |
De-/Aktiviert die Umkehrung der Mausposition y (ein=true, aus=false)
value | der Wahrheitswert für den gewünschten Zustand |
void Vislucsgl::Renderlogic::switchView | ( | int | value ) | [inline] |
Setzt die gewünschte Ansicht (Top=0, Front=1, Side=2)
value | der Wert der gewünchten Ansicht |