sources:
BOX.CPP (3.1k)
BOX.H (507 bytes)
RAY.CPP (609 bytes)
RAY.H (604 bytes)
SPHERE.CPP (1.9k)
SPHERE.H (564 bytes)
TRIANGLE.CPP (2.1k)
TRIANGLE.H (1.2k)
UTIL.H (1.7k)
VECTOR.CPP (1.6k)
VECTOR.H (5.0k)
cgapplication.cpp (3.2k)
cgapplication.h (3.5k)
cgraytracer.cpp (18.8k)
cgraytracer.h (1.6k)
shape.h (754 bytes)


binaries:
Release/raytracer.exe (38.0k)


website:
more info here


screenshot:
studies/grafik2/Computergrafik-Code6/Aufgabe17/cgapplication.h
download file

  1 //
  2 // Computergraphik II
  3 // Prof. Dr. Juergen Doellner
  4 // Wintersemester 2001/02
  5 //
  6 // Rahmenprogramm zu Aufgabenzettel 7
  7 //
  8
  9 #ifndef CG_APPLICATION_H
 10 #define CG_APPLICATION_H
 11
 12 #include <GL/glut.h>
 13
 14 // einige haeufig verwendete Header-Dateien
 15 #include <assert.h>
 16 #include <iostream.h>
 17 #include <math.h>
 18
 19 class CGApplication {
 20 public:
 21
 22     // Die Klasse "CGApplication" stellt ein Rahmenprogramm bereit,
 23     // mit dem sie ihre Aufgaben loesen koennen. Dazu muessen sie
 24     // eine Klasse hiervon ableiten, und eine oder mehrere der
 25     // weiter unten deklarierten on*()-Methoden ueberschreiben.
 26     // Diese Klasse ist ein sogenanntes "Singleton", d.h.: Es kann
 27     // immer nur eine einzige Instanz von dieser (oder einer
 28     // abgeleiteten) Klasse erzeugt werden!
 29     CGApplication();
 30     virtual ~CGApplication();
 31
 32     // Startet die Anwendung und muss im Hauptprogramm aufgerufen werden.
 33     void start(const char* windowTitle = "CGApplication",
 34                bool doubleBuffering = true,
 35                unsigned long windowWidth = 400, unsigned long windowHeight = 400)
;
 36
 37     // Diese Methode wird nur einmal beim Start der Anwendung aufgerufen
 38     // und dient zur Initialisierung von OpenGL (hier kann z.B. die
 39     // Hintergrundfarbe fuer das Anwendungsfenster definiert werden). Sie
 40     // kann von einer abgeleiteten Klasse ueberschrieben werden.
 41     virtual void onInit();
 42
 43     // Jedesmal wenn der Fensterinhalt neu gezeichnet werden muss,
 44     // wird diese Methode aufgerufen. Sie muss von einer abgeleiteten
 45     // Klasse ueberschrieben werden!
 46     virtual void onDraw() = 0;
 47
 48     // Jedesmal wenn sich die Fenstergroesse geaendert hat, wird diese
 49     // Methode aufgerufen (die Methode onDraw() wird im Anschluss
 50     // automatisch aufgerufen).
 51     virtual void onSize(unsigned int newWidth, unsigned int newHeight) = 0;
 52
 53     // Spezifiziert die beiden Konstanten "LeftMouseButton" und
 54     // "RightMouseButton".
 55     enum MouseButton { LeftMouseButton, RightMouseButton };
 56
 57     // Jedesmal wenn eine Maustaste im Fenster gedrueckt wird, wird diese
 58     // Methode mit der entsprechenden Taste ("LeftMouseButton" oder
 59     // "RightMouseButton") und den zugehoerigen Koordinaten (x und y)
 60     // aufgerufen. Die Koordinaten werden als Pixel uebergeben, wobei der
 61     // Koordinaten-Ursprung die linke untere Fensterecke ist. Diese
 62     // Methode kann von einer abgeleiteten Klasse ueberschrieben werden.
 63     virtual void onButton(MouseButton button, int x, int y);
 64
 65     // Jedesmal wenn die Maus mit gedrueckter Maustaste ueber das Fenster
 66     // bewegt wird, wird diese Methode mit den entsprechenden Koordinaten
 67     // aufgerufen (siehe auch Methode onButton()). Diese Methode kann von
 68     // einer abgeleiteten Klasse ueberschrieben werden.
 69     virtual void onMove(int x, int y);
 70
 71     // Jedesmal wenn eine Taste gedrueckt wird, wird diese Methode
 72     // aufgerufen.
 73     virtual void onKey(unsigned char key);
 74
 75
 76     // Wird aufgerufen, wenn nichts zu tun ist.
 77     virtual void onIdle();
 78
 79     // Diese Methode sollte nach Beendigung aller Zeichenoperationen fuer
 80     // ein Bild (normaler Weise am Ende der Methode onDraw()) aufgerufen
 81     // werden, um den Front- mit dem Back-Buffer zu tauschen! Wird dieser
 82     // Aufruf ausgelassen, so werden die Zeichenoperationen nicht sichtbar!!!
 83     void swapBuffers();
 84
 85 private:
 86     // Verbiete den Copy-Konstruktor und den Zuweisungsoperator, da
 87     // diese Klasse ein Singleton ist und somit nicht kopiert werden
 88     // darf!
 89     CGApplication(const CGApplication&);
 90     CGApplication& operator=(const CGApplication&);
 91 };
 92
 93 #endif // CG_APPLICATION_H
 94
 95