1 / 11

Open GL

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>

Télécharger la présentation

Open GL

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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/

  2. 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);

  3. Open GL • Main함수 에니메이션을 위한 더블버퍼링과, RGB컬러를 사용 glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); 윈도우 이름을 Multimedia로 설정 glutCreateWindow(“Multimedia"); 키 입력에 대한 함수 SpecialKeys 연결 glutSpecialFunc(SpecialKeys); 윈도우 사이즈 변경에 대한 함수 ChangeSize 연결 glutReshapeFunc(ChangeSize); 그림을 그릴 함수 RenderScene 연결 glutDisplayFunc(RenderScene); 프로그램을 시작 glutMainLoop();

  4. Open GL • ChangeSize 함수 • 윈도우의 크기 변경시 호출되며 전달된 윈도우의 크기에 따라 관측공간을 재설정 한다. • gluPerspective함수를 사용하여 원근감이 표현되는 공간을 설정한다 • SpecialKeys 함수 • 사용자의 입력된 키값에 따라 자동차의 회전과 이동값을 주어진다 • 좌우버튼 입력시 일정량의 회전값을 저장하며 앞뒤버튼 입력시 변경된 회전방향으로 전진 또는 후진되는 값을 저장한다. • glutPostRedisplay 함수를 이용하여 변경된 값에 따라 화면을 다시 그린다.

  5. 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에 의해 호출될 함수 이름

  6. 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의 메인 이벤트 핸들링 루푸를 시작한다. 이벤트 루프에서 모든 키보드, 마우스, 타이머, 다시 그리기 등과 여러가지 윈도우 메시지를 처리하게 된다. 이 함수는 프로그램을 종료할 때까지 리턴하지 않는다.

  7. 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 절단 평면 사이의 거리이다. 이 값은 항상 양의 값을 갖는다.

  8. Open GL • glMatrixMode(GLenum mode); • 이 함수는 행렬 연산시 어느 행렬 스택을 사용할지 결정할 때 사용한다. • 파라미터 • GL_MODELVIEW 행렬 연산이 모델관측 스택에 적용된다 (장면 상에서 물체를 이동할때 사용된다) • GL_PROJECTION 행렬 연산이 투영 행렬 스택에 적용된다 (클리핑 공간을 정의할 때 사용한다) • GL_TEXTURE 행렬 연산이 텍스쳐 행렬 스택에 적용된다 (텍스쳐 좌표를 조작한다) • glLoadIdentity(void); • 이 함수는 현재 변환 행렬을 주어진 단위 행렬로 바꾼다. 이는 본질적으로 좌표계를 시각 좌표계로 초기화하는 것과 같다.

  9. 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값을 설정한다 • 파라미터 • 적새고, 녹색, 청색, 알파

  10. 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축을 중심

  11. 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의 크기로 주전자를 생성한다.

More Related