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;
}
'Language > C++ & openGL' 카테고리의 다른 글
그래픽스 시작 (0) | 2020.05.13 |
---|---|
openGL Retained mode(보류모드) / 디스플레이 리스트 (1) | 2020.05.06 |
openGL 더블 버퍼링 (0) | 2020.05.02 |
외부라이브러리 추가하기, 헤더파일 추가하기 (0) | 2020.04.28 |
OpenGL 키보드 콜백 회전 회오리 (0) | 2020.04.25 |
댓글