#define GL_PI 3.1415f

void createCylinder(GLfloat centerx, GLfloat centery, GLfloat centerz, GLfloat radius, GLfloat h)
{
    /* function createCyliner()
    원기둥의 중심 x,y,z좌표, 반지름, 높이를 받아 원기둥을 생성하는 함수(+z방향으로 원에서 늘어남)
    centerx : 원기둥 원의 중심 x좌표
    centery : 원기둥 원의 중심 y좌표
    centerz : 원기둥 원의 중심 z좌표
    radius : 원기둥의 반지름
    h : 원기둥의 높이
    */
    GLfloat x, y, angle;

    glBegin(GL_TRIANGLE_FAN);           //원기둥의 윗면
    glNormal3f(0.0f, 0.0f, -1.0f);
    glColor3ub(139, 69, 19);
    glVertex3f(centerx, centery, centerz);

    for(angle = 0.0f; angle < (2.0f*GL_PI); angle += (GL_PI/8.0f))     {         x = centerx + radius*sin(angle);         y = centery + radius*cos(angle);         glNormal3f(0.0f, 0.0f, -1.0f);         glVertex3f(x, y, centerz);     }     glEnd();     glBegin(GL_QUAD_STRIP); //원기둥의 옆면     for(angle = 0.0f; angle < (2.0f*GL_PI); angle += (GL_PI/8.0f))     {         x = centerx + radius*sin(angle);         y = centery + radius*cos(angle);         glNormal3f(sin(angle), cos(angle), 0.0f);         glVertex3f(x, y, centerz);         glVertex3f(x, y, centerz + h);     }     glEnd();     glBegin(GL_TRIANGLE_FAN); //원기둥의 밑면     glNormal3f(0.0f, 0.0f, 1.0f);     glVertex3f(centerx, centery, centerz + h);     for(angle = (2.0f*GL_PI); angle > 0.0f; angle -= (GL_PI/8.0f))     {         x = centerx + radius*sin(angle);         y = centery + radius*cos(angle);         glNormal3f(0.0f, 0.0f, 1.0f);         glVertex3f(x, y, centerz + h);     }     glEnd(); }


glutInitDisplayMode() : OpenGL 설정하는 함수(buffer, color mode, depth 비교 등)

 

glutInitWindowSize() : 인자로 윈도우의 width, height를 넣으면 윈도우 생성시 해당 크기로 생성.

 

glutCreateWindow() : 윈도우 창을 default 옵션으로 생성. 인자로 window창 제목 설정 가능

 

glutDisplayFunc() : 윈도우를 그릴 때마다 인자로 주어진 함수를 호출하도록 설정하는 함수

 

glutReshapeFunc() : 윈도우의 크기를 변경할 때 인자로 주어진 함수를 호출하도록 설정하는 함수

인자로 주어진 함수의 인자는 현재 윈도우의 width, height 값이 들어온다. 인자 수정 불가.

ex) change(GLsizei width, GLsizei height)

 

SetupRC() : rendering 전 OpenGL 초기화해주는 함수

 

glClearColor() : window를 clear할 색상 지정. 3가지 인자 각각 RGB, 마지막 인자 투명도 설정 alpha

 

glClear(GL_COLOR_BUFFER_BIT) : 실제 clear 작업

 

glFlush() : queue에 저장된 명령어들 수행

 

glutMainLoop() : 운영체제에 관련된 모든 내용을 프로그램이 종료할 때까지 처리하도록 설정하는 함수.

 

glutTimerFunc() : 첫번째 인자로 준 시간 뒤에 두번째 인자로 주어진 함수를 호출해줌, 마지막 세번째 인자는 함수에게 전달할 int형 값이다.

 

설치환경 : windows7, visual studio 2012

 

1. OpenGL 다운받기

http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip

위 파일을 다운 받아서 압축을 푼다.

 

2. visual studio에서 빈 프로젝트로 프로젝트를 생성한다.


3. 프로젝트에서 오른쪽 버튼을 클릭해

   '속성' -> '링커' -> '입력' -> '추가 종속성'의 맨 앞에 'glut32.lib;'을 추가해 준다.


+ Recent posts