120 likes | 274 Views
Open GL. GLUT 라이브러리 www.opengl.org 에서 다운받으세요 . *.h 는 Visual Studio 디렉토리의 include/gl/ 폴더에 * .lib 는 Visual Studio 디렉토리의 lib 폴더에 * .dll 은 윈 98 의 경우 windows/system 폴더 2000 은 winNT/system32 폴더 국내 관련사이트 http://dip2k.coco.st/. Open GL. 헤더 , 전역변수 , 함수 #include <gl/glut.h>
E N D
Open GL • GLUT 라이브러리 • www.opengl.org에서 다운받으세요. • *.h는 Visual Studio 디렉토리의 include/gl/ 폴더에 • *.lib는 Visual Studio디렉토리의 lib 폴더에 • *.dll은 • 윈98의 경우 windows/system 폴더 • 2000은 winNT/system32 폴더 • 국내 관련사이트 • http://dip2k.coco.st/
Open GL • 헤더, 전역변수, 함수 #include <gl/glut.h> #include <math.h> GLfloat Rot; //자동차의 회전량 저장 GLfloat xMove, yMove; // 자동차의 움직임량 저장 //윈도우 사이즈 변경시 호출되는 함수 void ChangeSize(GLsizei w, GLsizei h); //그림을 그리는 함수 void RenderScene(void); //키입력을 처리하는 함수 void SpecialKeys(int key, int x, int y); //바퀴를 그리는 함수 void wheel(void);
Open GL • Main함수 에니메이션을 위한 더블버퍼링과, RGB컬러를 사용 glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); 윈도우 이름을 Multimedia로 설정 glutCreateWindow(“Multimedia"); 키 입력에 대한 함수 SpecialKeys 연결 glutSpecialFunc(SpecialKeys); 윈도우 사이즈 변경에 대한 함수 ChangeSize 연결 glutReshapeFunc(ChangeSize); 그림을 그릴 함수 RenderScene 연결 glutDisplayFunc(RenderScene); 프로그램을 시작 glutMainLoop();
Open GL • ChangeSize 함수 • 윈도우의 크기 변경시 호출되며 전달된 윈도우의 크기에 따라 관측공간을 재설정 한다. • gluPerspective함수를 사용하여 원근감이 표현되는 공간을 설정한다 • SpecialKeys 함수 • 사용자의 입력된 키값에 따라 자동차의 회전과 이동값을 주어진다 • 좌우버튼 입력시 일정량의 회전값을 저장하며 앞뒤버튼 입력시 변경된 회전방향으로 전진 또는 후진되는 값을 저장한다. • glutPostRedisplay 함수를 이용하여 변경된 값에 따라 화면을 다시 그린다.
Open GL • glutInitDisplayMode(unsigned int mode); • Glut기반의 프로그램에서 OpenGL윈도우 셋업할때 호출되어야 할 첫번째함수. Open GL에서 드로잉 연산에 사용하는 윈도우의 특성을 설정한다. • 파라미터 • GLUT_SINGLE 싱글버퍼 윈도우 • GLUT_DOUBLE 더블버퍼 윈도우 • GLUT_RGBA RGBA모드 윈도우 • GLUT_DEPTH 32비트 깊이(depth) 버퍼 • SLUT_STENCIL 스텐실(stencil)버퍼 • GLUT_ACCUM 누적(accumulation)버퍼 • GLUT_ALPHA 알파(destination alpha) 버퍼 • glutSpecialFunc(void (*func)(int kye, int x, inty)); • Non-ASCII키 입력시 GLUT에 위해 호출되는 콜백함수를 설정한다. • 파라미터 • (*func)(int key, int x, int y)형 : non-ASCII키 입력이 일어날때 GLUT에 의해 호출될 함수 이름
Open GL • glutReshapeFunc(void (*func)(int width, int height)); • 윈도우의 크기나 모양이 바뀔때 GLUT가 호출하는 콜백함수이다 • 파라미터 • (*func)(int width, int height) : 윈도우 사이즈 변경시 GLUT가 호출하는 함수 이름이다. • glutDisplayFunc(void (*func)(void)); • 현재 윈도우에 대한 디스플레이 콜백함수를 설정한다 • 파라미터 • (*func)(void) : 렌더링하는 함수의 이름이다. • glutMainLoop(void); • GLUT의 메인 이벤트 핸들링 루푸를 시작한다. 이벤트 루프에서 모든 키보드, 마우스, 타이머, 다시 그리기 등과 여러가지 윈도우 메시지를 처리하게 된다. 이 함수는 프로그램을 종료할 때까지 리턴하지 않는다.
Open GL • glViewport(GLint x, GLint y, GLsizei width, GLsizei height); • 클리핑 공간 좌표를 실제 윈도우 좌표로 매핑하기 위해 사용되는 윈도우 영역을 설정한다. • 파라미터 • GLint x : 윈도우의 왼쪽 모서리로부터 뷰포트의 시작점까지의 픽셀수 • GLint y : 윈도우의 아래 모서리로부터 뷰포트의 시작점까지의 픽셀수 • GLsizei width : 필셀 단위의 뷰포트 폭이다. • GLsizei height : 픽셀 단위의 뷰포트 높이이다. • gluPerspective(GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar); • 관측 투시투영 행렬을 정의한다. • 파라미터 • GLdouble fovy : 각도(degree)로 나타낸 화각이다. Y축 방향이다 • GLdouble aspect : 종횡비(x/y)이다 • GLdouble zNear, zFar : 관측자와 near, for 절단 평면 사이의 거리이다. 이 값은 항상 양의 값을 갖는다.
Open GL • glMatrixMode(GLenum mode); • 이 함수는 행렬 연산시 어느 행렬 스택을 사용할지 결정할 때 사용한다. • 파라미터 • GL_MODELVIEW 행렬 연산이 모델관측 스택에 적용된다 (장면 상에서 물체를 이동할때 사용된다) • GL_PROJECTION 행렬 연산이 투영 행렬 스택에 적용된다 (클리핑 공간을 정의할 때 사용한다) • GL_TEXTURE 행렬 연산이 텍스쳐 행렬 스택에 적용된다 (텍스쳐 좌표를 조작한다) • glLoadIdentity(void); • 이 함수는 현재 변환 행렬을 주어진 단위 행렬로 바꾼다. 이는 본질적으로 좌표계를 시각 좌표계로 초기화하는 것과 같다.
Open GL • glFrontFace(GLenum mode); • 폴리곤의 어느면이 앞면 혹은 뒷면인지 정의한다. • 파라미터 • GL_CW : 시계방향 • GL_CCW : 반시계방향 • glEnable(GLenum feature); / glDisable • glDisable/glEnable은 Open GL 드로잉 관련 기능을 disable/ enable한다 • glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampft alpha); • color버퍼를 clear하기 위한 color와 alpha값을 설정한다 • 파라미터 • 적새고, 녹색, 청색, 알파
Open GL • glPushMatrix(void); • 현재 행렬을 행렬스택에 저장(push)한다 • glPopMatrix(void); • Push된 값을 복구하기 위하여 사용된다. • glTranslate(GLdouble x, GLdouble y, GLdouble z); • 현재 행렬을 이동변환 행렬과 곱한다 • 파라미터 : • x축의 이동량, y축의 이동량, z축의 이동량 • glRotate(GLdouble angle, GLdouble x, GLdouble y, GLdouble z) • 현재 행렬을 회전행렬로 지정된 만큼 회전한다. • 파라미터 • angle : 회전각을 degree(도)단위로 나타낸다. • x, y, z축을 중심
Open GL • glColor(GL red, GL green, GL blue); • 현재색을 각각의 적색, 녹색, 청색 성분을 명시하여 설정하도록 한다. • 파라미터 • 적색, 녹색 청색 삽입 • glVertex(GL x, GL, y, GL z); • x, y, z에 해당하는곳에 점을 찍는다. • glBegin(GLenum mode); • glEnd와 함께 Vertex들을 이어준다 • 파라미터 • GL_POINTS : 점을 생성한다 • GL_LINES : 2개의 점으로 한 개의 선분을 생성한다 • GL_POLYGONE : 주어진 정점들을 이용하여 폴리곤을 생성한다 • GL_TRIANGLE_FAN : 주어진 정점들을 이용하여 삼각형 팬을 생성한다. • glutSolidTeapot(GLint Size) • Size의 크기로 주전자를 생성한다.