[OpenGL] OpenGL 주전자 그리기, 회전하기
OpenGL 주전자(Teapot) 그리기, 회전하기
주전자 그리기
기본적인 주전자 1개 그리기 예제
#include <GL/freeglut.h>
void draw(void){ glClearColor(1.0f, 1.0f, 1.0f, 1.0f);//배경 색 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glColor4f(0.0f, 0.0f, 1.0f, 1.0f);//사물 색 설정
glutWireTeapot(0.5);//주전자 그리기, 사이즈
glFlush();}
int main(int argc, char** argv){ glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA | GLUT_DEPTH); glutInitWindowPosition(800, 200); glutCreateWindow("Example");
glutDisplayFunc(draw);
glutMainLoop();}
실행 결과
주전자 그리기
기본적인 주전자 1개 그리기 예제
#include <GL/freeglut.h>
void draw(void)
{
glClearColor(1.0f, 1.0f, 1.0f, 1.0f);//배경 색
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glColor4f(0.0f, 0.0f, 1.0f, 1.0f);//사물 색 설정
glutWireTeapot(0.5);//주전자 그리기, 사이즈
glFlush();
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA | GLUT_DEPTH);
glutInitWindowPosition(800, 200);
glutCreateWindow("Example");
glutDisplayFunc(draw);
glutMainLoop();
}
실행 결과
주전자 회전하기
주전자를 rotatef 함수를 이용해서 회전 한다.
OpenGL은 오른손 법칙을 사용한다. 자신이 생각하는 각도와 다를 수 있으므로 잘 생각해야 한다.
#include <GL/freeglut.h>
void draw(void)
{
glClearColor(1.0f, 1.0f, 1.0f, 1.0f);//배경 색
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glColor4f(0.0f, 0.0f, 1.0f, 1.0f);//사물 색 설정
glRotatef(30, 0, 0, 1);// z축으로 30도 회전
glutWireTeapot(0.3);//주전자 그리기, 사이즈
glFlush();
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA | GLUT_DEPTH);
glutInitWindowPosition(800, 200);
glutCreateWindow("Example");
glutDisplayFunc(draw);
glutMainLoop();
}
실행 결과
Z축으로 30도 회전했다.
주전자 이동 시키기
주전자를 y축을 기준으로 이동 시켰다.
#include <GL/freeglut.h>
void draw(void)
{
glClearColor(1.0f, 1.0f, 1.0f, 1.0f);//배경 색
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glColor4f(0.0f, 0.0f, 1.0f, 1.0f);//사물 색 설정
glTranslatef(0.0f , 0.7f, 0.0f);
glutWireTeapot(0.3);//주전자 그리기, 사이즈
glFlush();
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA | GLUT_DEPTH);
glutInitWindowPosition(800, 200);
glutCreateWindow("Example");
glutDisplayFunc(draw);
glutMainLoop();
}
실행 결과
가운데 있던 주전자가 위로 이동했다.
주전자 여러 개 그리기
glTranslatef(), glRoatef() 함수를 활용하면 여러 주전자를 그릴 수 있다.
#include <GL/freeglut.h>
void draw(void)
{
glClearColor(1.0f, 1.0f, 1.0f, 1.0f);//배경 색
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glColor4f(0.0f, 0.0f, 1.0f, 1.0f);//사물 색 설정
glTranslatef(-0.5f , 0.7f, 0.0f);
glutWireTeapot(0.3);//주전자 그리기, 사이즈
glTranslatef(0.0f, -0.7f, 0.0f);
glutWireTeapot(0.3);//주전자 그리기, 사이즈
glTranslatef(0.8f, 0.0f, 0.0f);
glRotatef(180, 0, 1, 0);// y축으로 30도 회전
glutWireTeapot(0.3);//주전자 그리기, 사이즈
glFlush();
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA | GLUT_DEPTH);
glutInitWindowPosition(800, 200);
glutCreateWindow("Example");
glutDisplayFunc(draw);
glutMainLoop();
}
댓글
댓글 쓰기