-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.cpp
More file actions
83 lines (77 loc) · 2.82 KB
/
main.cpp
File metadata and controls
83 lines (77 loc) · 2.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
// GD-Praktikum: teil_1.cpp (Teil 1: Start-Programm)
// Hergenroether / Groch Last Update: 05.07.2014
#include <iostream>
#include <GL/freeglut.h> //lädt alles für OpenGL
void Init()
{
// Hier finden jene Aktionen statt, die zum Programmstart einmalig
// durchgeführt werden müssen
glEnable(GL_DEPTH_TEST);
glClearDepth(1.0);
}
void RenderScene() //Zeichenfunktion
{
// Hier befindet sich der Code der in jedem Frame ausgefuehrt werden muss
glLoadIdentity (); // Aktuelle Model-/View-Transformations-Matrix zuruecksetzen
glClearColor(1., 0.5, 0, 1);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glBegin( GL_POLYGON );
glColor4f( 1.0, 0.0, 0.0, 1.0); //Links unten rot
glVertex3f( -0.5, -0.5, -0.5 );
glColor4f(0, 0, 1, 1); //Der Rest blau
glVertex3f( 0.5, -0.5, -0.5 );
glVertex3f( 0.5, 0.5, -0.5 );
glVertex3f( -0.5, 0.5, -0.5 );
glEnd();
//glScalef(0.5, 0.5, 1);
glBegin( GL_POLYGON );
glColor4f( 0., 1., 0., 1.);
glVertex3f( -0.5, -0.5, -1.);
glVertex3f( 0.5, -0.5, -1.);
glVertex3f( 0.5, 0.5, -1.);
glVertex3f( -0.5, 0.5, -1.);
glEnd();
glutSwapBuffers();
}
void Reshape(int width,int height)
{
// Hier finden die Reaktionen auf eine Veränderung der Größe des
// Graphikfensters statt
// Matrix für Transformation: Frustum->viewport
glMatrixMode(GL_PROJECTION);
// Aktuelle Transformations-Matrix zuruecksetzen
glLoadIdentity ();
// Viewport definieren
glViewport(0,0,width,height);
// Frustum definieren (siehe unten)
glOrtho( -1., 1., -1., 1., 0.3, 1.3);
// Matrix für Modellierung/Viewing
glMatrixMode(GL_MODELVIEW);
}
void Animate (int value)
{
// Hier werden Berechnungen durchgeführt, die zu einer Animation der Szene
// erforderlich sind. Dieser Prozess läuft im Hintergrund und wird alle
// 1000 msec aufgerufen. Der Parameter "value" wird einfach nur um eins
// inkrementiert und dem Callback wieder uebergeben.
std::cout << "value=" << value << std::endl;
// RenderScene aufrufen
glutPostRedisplay();
// Timer wieder registrieren - Animate wird so nach 10 msec mit value+=1 aufgerufen.
int wait_msec = 10;
glutTimerFunc(wait_msec, Animate, ++value);
}
int main(int argc, char **argv)
{
glutInit( &argc, argv ); // GLUT initialisieren
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH );
glutInitWindowSize( 600, 600 ); // Fenster-Konfiguration
glutCreateWindow( "Denis Hirt; Tim Christen" ); // Fenster-Erzeugung
glutDisplayFunc( RenderScene ); // Zeichenfunktion bekannt machen
glutReshapeFunc( Reshape );
// TimerCallback registrieren; wird nach 10 msec aufgerufen mit Parameter 0
glutTimerFunc( 10, Animate, 0);
Init();
glutMainLoop();
return 0;
}