OpenGL nicht im loop sondern zeitlich begrenzen?
-
Ich möchte die Ausgabe von OpenGL nur eine festgesetzte zeitlang einblenden und dann etwas anderes zeigen. Z.B. soll 10 sec ein Quadrat gezeigt werden und dann ein anderes. Wie mache ich das?
Hier ist ein Beispielcode, wäre schön wenn Ihr mir weiter helfen könntet.
#include <windows.h>
#include <gl\gl.h>
#include "glut.h"void init(void);
void display(void);
void keyboard(unsigned char, int, int);int main (int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
glutInitWindowSize(600, 600);
glutInitWindowPosition(50, 50);
glutCreateWindow("A 3D Object");
init();glutDisplayFunc(display);
glutKeyboardFunc(keyboard); /* set keyboard handler */
glutMainLoop();
return 0;
}void init(void)
{
glClearColor(0.0, 0.0, 0.0, 0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-15.0, 15.0, -15.0, 15.0, -15.0, 15.0);
}void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);glBegin(GL_QUADS);
glColor3f(0.0, 0.0, 1.0);
glVertex3f(-3.0, -3.0, 0.0);
glVertex3f(3.0, -3.0, 0.0);
glVertex3f(3.0, 3.0, 0.0);
glVertex3f(-3.0, 3.0, 0.0);
glEnd();glutSwapBuffers();
}void keyboard(unsigned char key, int x, int y)
{
/* this is the keyboard event handler
the x and y parameters are the mouse
coordintes when the key was struck /
switch (key)
{
case 'u':
case 'U':
glRotatef(3.0, 1.0, 0.0, 0.0); / rotate up /
break;
case 'd':
case 'D':
glRotatef(-3.0, 1.0, 0.0, 0.0); / rotate down /
break;
case 'l':
case 'L':
glRotatef(3.0, 0.0, 1.0, 0.0); / rotate left /
break;
case 'r':
case 'R':
glRotatef(-3.0, 0.0, 1.0, 0.0); / rotate right /
}
display(); / repaint the window */
}
-
Ich mach sowas immer mit einer finite state machine.
Bye, TGGC \-/
-
Was ist das?
-
Sunset schrieb:
Was ist das?
Das ist einer von den Begriffen, die du am besten in deine favorisierte Suchmaschine reinstopfen kannst
-
Bitte lesen. Danke.
Bye, TGGC (Reden wie die Großen)