1 / 13

OpenGL Programming

OpenGL Programming. 첫번째 예제 : Blue Background.

emele
Download Presentation

OpenGL Programming

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. OpenGL Programming

  2. 첫번째 예제: Blue Background #include <GL/glut.h> /* includes gl.h glu.h */GLvoid drawScene ( GLvlid );void main( int argc, char *argv[] ){ // 초기화 함수들glutInitDisplayMode (GLUT_SINGLE | GLUT_RGBA); // 디스플레이 모드 설정glutInitPosition ( 100, 100 ); // 윈도우의 위치 지정glutInitWindowSize ( 250, 250 ); // 윈도우의 크기 지정glutCreateWindow( "Example1" ); // 윈도우 생성 (윈도우 이름)       glutDisplayFunc( drawScene ); // 출력 함수의 지정 glutMainLoop();} GLvoid drawScene( GLvoid ) {       glClearColor(0.0f, 0.0f, 1.0f, 1.0f); // 바탕색을 'blue' 로 지정 glClear( GL_COLOR_BUFFER_BIT ); // 설정된 색으로 전체를 칠하기glFlush(); // 화면에 출력하기}

  3. 두번째 예제:사각형 그리기 #include <GL/glut.h> /* includes gl.h glu.h */GLvoid drawScene( GLvoid )void main ( int argc, char *argv[] ) {       //초기화 함수들 glutInitDisplayMode( GLUT_SINGLE | GLUT_RGBA ); // 디스플레이 모드 설정glutInitWindowPosition( 100, 100 ); // 윈도우의 위치지정 glutInitWindowSize ( 250, 250 ); // 윈도우의 크기 지정glutCreateWindow( "Example2" ); // 윈도우 생성 (윈도우 이름)       glutDisplayFunc( drawScene ); // 출력 함수의 지정 glutMainLoop();} GLvoid drawScene( GLvoid ) {       glClearColor(0.0f, 0.0f, 1.0f, 1.0f); // 바탕색을 'blue' 로 지정 glClear( GL_COLOR_BUFFER_BIT ); // 설정된 색으로 전체를 칠하기glColor4f(0.0f, 1.0f, 0.0f, 1.0f); // 그리기 색을 'green' 으로 지정 glRectf(-0.5f, -0.5f, 0.5f, 0.5f); // 사각형 그리기glFlush(); // 화면에 출력하기}

  4. 기본 도형 그리기 • 점, 선, 다각형, 등의 기본적인 도형 • glBegin(GL_POLYGON);        glVertex2i (20, 100);   // V1        glVertex2i (20, 20);    // V2        glVertex2i (140, 20);   // V3        glVertex2i (140, 100);  // V4glEnd();   • 기본 출력요소의 속성 • glPointSize(size): 점의 크기 • glLineWidth(width): 선 굵기 • glLineStipple(factor,pattern): 점선 및 쇄선의 모양

  5. 변환 • OpenGL에서의 4가지 변환 • 뷰잉(Viewing) 변환 : 관측자의 시점(viewpoint)을 설정 • 모델링(Modeling) 변환 : 3차원 공간에서 그래픽스 객체의 이동, 신축, 회전 • 투영(Projection) 변환 : 3차원 그래픽스 객체를 2차원 평면으로 투영 • 뷰포트(Viewport) 변환 : 투영된 그림의 출력될 위치와 크기를 정의

  6. 변환 행렬 함수 • 기하변환 함수: 이동, 신축, 회전 • glTranslate3f(tx, ty, tz);   • glScale3f(sx, sy, sz);   • glRotate4f(angle, x, y, z); • 투영(Projection) • gluOrtho2D(left, right, bottom, top);   // 직각투영 • gluPerspective(fovy, aspect, zNear, zFar);  // 원근투영 • 뷰포트(Viewport)의 설정 : glViewport(x, y, width, height)

  7. 조명(Lights) • 조명모델 • 주변조명(Ambient Light) :  물체의 위치에 상관없이 고르게 비치는 빛 • 산란반사조명(Diffuse Light) :  빛의 방향으로 노출된 면이 밝아지는 조명 • 거울반사조명(Specular Light) :  특정 부분이 집중적으로 반사되는 빛

  8. 조명과 재질의 설정 • 조명의 설정 • 광원(Light Source)의 설정 : glEnable(GL_LIGHT0) 함수로 모드를 지정한 후, glLight() 함수에서 광원의 위치 및 색상값을 설정 • 재질(Material)의 설정 • glMaterial()에서 재질의 종류 및 해당하는 값을 설정 • Diffuse Reflection • Ambient Reflection • Specular Reflection • Emission • Shininess

  9. 텍스쳐 매핑(Texture Mapping) • 재질이나 질감을 나타내는 이미지를 3차원 물체의 표면에 입히는 작업

  10. 안개 효과(Fog Effect) • glFog(pname, param) 사용

  11. 그 밖에 주요 기능 • 곡면 그리기 • 3차원 객체의 은면 제거(Hidden Surface Removal)

  12. 곡면 그리기 • GLU에서 지원하는 곡면함수 • 원기둥 gluCylinder() • 원판 gluDisk() • 구 gluSphere() • 원뿔? • Nurbs

  13. 3차원 객체의 은면제거(Hidden Surface Removal) • 깊이검사(Depth Test) 설정 : 은면 제거 과정의 실행 • glEnable(GL_DEPTH_TEST) • glDisable(GL_DEPTH_TEST) • Culling 의 설정 : 다면체의 뒷면을 그리지 않는 기능 • glEnable(GL_CULL_FACE) • glDisable(GL_CULL_FACE)

More Related