본문 바로가기
Language/C++ & openGL

openGL keyboad, timer / 키보드 콜백과 타이머

by javapp 자바앱 2020. 5. 3.
728x90

 

 

 

타이머를 이용하여 계속 회전 시키기

#include <GL/glut.h>

#include <GL/gl.h>

#include <GL/glu.h>

#include <stdio.h>

#include <windows.h>

 

int zRotate = 0;

unsigned char key = 'z';

void MyDisplay()

{

        glClear(GL_COLOR_BUFFER_BIT);

 

        glLoadIdentity();        //이전 상태 초기화 후 변환

        glRotatef(zRotate, 0.0, 0.0, 1.0); //z를 중심을 회전

 

        glutWireTeapot(0.5);

 

        glFlush();

}

 

void MyKeyboard(unsigned char KeyPressed, int X, int Y)

{

        key = KeyPressed;

        switch (KeyPressed) {

        case 'Q':case'q':

                 exit(0); break;

        case 'z':

                 zRotate -= 10;

                 glutPostRedisplay();

                 break;

        case 'Z':

                 zRotate += 10;

                 glutPostRedisplay();

                 break;

        default:

                 break;

        }

 

}

void MyTimer(int Value) {

 

        key == 'z';

        if (key == 'z')zRotate -= 10;

        else if (key == 'Z') zRotate += 10;

 

        glutPostRedisplay();

        glutTimerFunc(100, MyTimer, 1);

 

}

 

int main(int argc, char* argv[])

{

        glutInit_ATEXIT_HACK(&argc, argv);

        glutCreateWindow_ATEXIT_HACK("OpenGL Example");

        glutInitWindowSize(500, 500);   //윈도우의 width와 height

        glutInitWindowPosition(100, 100); //윈도우의 위치 (x,y)

 

        glLoadIdentity();

 

        glutKeyboardFunc(MyKeyboard); // 키보드 콜백 추가

        glutDisplayFunc(MyDisplay);

        glutTimerFunc(100, MyTimer, 1);

 

        glutMainLoop();

        return 0;

}

 

 

 

댓글