OpenGL

[OpenGL] 도형 애니메이션 만들기

Let it out 2024. 2. 17. 19:51

애니메이션

도형이나 물체가 알아서 움직이는 것을 애니메이션, 비디오라고 불린다.
 

 

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();
  }
 
 
반응형