Migający kwadrat
Ostatnio zmodyfikowano 2014-03-10 11:33
MJMJ Temat założony przez niniejszego użytkownika |
Migający kwadrat » 2014-03-09 20:08:57 Witam, Zaznaczę na wstępie, że jestem dość początkujący w temacie opengl/glut. Chciałbym wyświetlić kwadrat w trybie pełnoekranowym. To jest w każdym tutorialu, więc to już mam ;) Ponadto, chciałbym żeby zmieniał kolor. Wiem, że mój monitor odświeża się z częstotliwością 60Hz, tak więc kwadrat mógłby zmieniać się najczęściej 30 razy na sekundę. Pytanie, jak to zrobić? Mniej więcej mi się udało, aczkolwiek kwadraty czasem nakładają się na siebie. Ponadto, czy mogę ustawić co ma być wyświetlane w każdej kolejnej ramce wyświetlanej przez monitor? Nie oczekuję gotowego rozwiązania, wystarczy, że ktoś mnie naprowadzi.
#include <GL/glut.h> #include <stdlib.h> #include <math.h>
int frame = 1; int obr = 1; void Display() { glClearColor( 1.0, 1.0, 1.0, 1.0 ); int time = glutGet( GLUT_ELAPSED_TIME ); if(( fmod( time, 33 ) == 0 ) ) { if( obr == 1 ) { obr = 0; glClear( GL_COLOR_BUFFER_BIT ); glBegin( GL_POLYGON ); glVertex3f( 0.0, 0.0, 0.0 ); glVertex3f( 0.0, 1.0, 0.0 ); glVertex3f( 1.0, 1.0, 0.0 ); glVertex3f( 1.0, 0.0, 0.0 ); glEnd(); glColor3f( 1.0, 0.0, 0.0 ); glFlush(); glutSwapBuffers(); } else if( obr == 0 ) { obr = 1; glClear( GL_COLOR_BUFFER_BIT ); glBegin( GL_POLYGON ); glVertex3f( 0.0, 0.0, 0.0 ); glVertex3f( 0.0, 1.0, 0.0 ); glVertex3f( 1.0, 1.0, 0.0 ); glVertex3f( 1.0, 0.0, 0.0 ); glEnd(); glColor3f( 0.0, 1.0, 0.0 ); glFlush(); glutSwapBuffers(); } } glutSwapBuffers(); frame++; }
void Reshape( int width, int height ) { Display(); }
enum { EXIT };
void Menu( int value ) { switch( value ) { case EXIT: exit( 0 ); } }
int main( int argc, char * argv[] ) { glutInit( & argc, argv ); glutInitDisplayMode( GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH ); glutGameModeString( "1366x768:16@60" ); glutEnterGameMode(); glutDisplayFunc( Display ); glutCreateMenu( Menu ); #ifdef WIN32 glutAddMenuEntry( "Wyjscie", EXIT ); #else glutAddMenuEntry( "Wyjscie", EXIT ); #endif glutAttachMenu( GLUT_RIGHT_BUTTON ); glutIdleFunc( Display ); glutMainLoop(); return 0; }
|
|
PsichiX |
» 2014-03-10 11:33:16 swoją drogą: if( frame % 30 = 0 ) { ... } |
|
« 1 » |