반응형
애니메이션
도형이나 물체가 알아서 움직이는 것을 애니메이션, 비디오라고 불린다.
sphere가 움직이는 애니메이션 만들기
sphere가 우측으로 5번, 좌측으로 5번 움직이는 코드다.
#include <GL/freeglut.h>
#include <stdio.h>
void draw(void)
{
glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glClearColor(1.0, 1.0, 1.0, 1.0); // 배경 색상
glColor4f(0.0, 0.0, 1.0, 1.0); //그림 색상
float Tx;
for (int i = 0; i < 10; i++)
{
glClear(GL_COLOR_BUFFER_BIT); // 그림 초기화
if (i < 5)
Tx = 0.1;
else
Tx = -0.1;
glTranslatef(Tx, 0.0, 0.0);
glutWireSphere(0.1, 20, 20);
Sleep(1000);
glFlush();
}
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA | GLUT_DEPTH);
glutInitWindowPosition(800, 200);
glutCreateWindow("Example");
glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);
glMatrixMode(GL_MODELVIEW);
glutDisplayFunc(draw);
glutMainLoop();
}
주의 할점
for문안에 glClear() 함수를 사용해 그림을 매번 초기화 해줘야 한다.
glClear 함수를 사용 하지 않으면 도형이 지워지지 않아 화면에 남게 된다.
for (int i = 0; i < 10; i++)
{
glClear(GL_COLOR_BUFFER_BIT); // 이 함 지우고 실행 시켜 보셈.
if (i < 5)
Tx = 0.1;
else
Tx = -0.1;
glTranslatef(Tx, 0.0, 0.0);
glutWireSphere(0.1, 20, 20);
Sleep(500);
glFlush();
}
반응형
'OpenGL' 카테고리의 다른 글
[OpenGL] 쉐이더(shader)/ 쉐이딩 구현 하기 (0) | 2024.02.19 |
---|---|
[OpenGL] 줌 인, 줌 아웃 구현하기 (0) | 2024.02.18 |
[OpenGL] 주전자(Teapot) 그리기, 도형 회전 시키기, 도형 이동 시키기 (0) | 2024.02.16 |
[OpenGL] 점(point) 그리기 (0) | 2024.02.15 |
[OpenGL] 선 그리기 (0) | 2024.02.14 |