4. OpenGL 상태들과 기본 도형들.

Slides:



Advertisements
Similar presentations
열왕기 상하는 중요하다 ! 왜 ? 시가 3 권 예언서 12 원 열왕기 상하는 중요하다 ! 대라느스 단겔학슥말.
Advertisements

멘토링 2 주차 장 프로그래밍을 위한 자바의 자료형  값이 변하지 않는 상수  메모리 기억공간인 변수.
Texture Mapping 년 봄학기 5/23/2014 박경신. OpenGL Texturing  OpenGL 에서 텍스쳐 맵핑 (texture mapping) 을 위한 3 단계 텍스쳐 활성화 glEnable(GL_TEXTURE_2D) 텍스쳐 맵핑방법.
0/29 Chapter 1. 만들기 LG CNS 인터넷 전략컨설팅 팀 박 수범 차장 1. 겉장 페이지달기 본문의.
디자인과 컴퓨터그래픽 컴퓨터 산업디자인. 디자인 도구로서의 컴퓨터그래픽스 1. 컴퓨터 그래픽스의 기능 컴퓨터그래픽스는 하드웨어와 소프트웨어로 이루어져 있다. 이 두 가지 가 서로 연결되어 하나의 시스템으로 디자인 결과물을 만든다. 2. 컴퓨터그래픽스 하드웨어 장치 >
Chapter 3. 뷰잉(Viewing).
(2) 고대 국가의 성립  1) 고대 국가의 성격    ① 중앙 집권 체제      - 국왕의 지위 강화, 부족장 세력의 통합,
좋은 강의 국제관계학과 정연식.
정지성 Chung-buk National University, Korea
2015 담당 강사 : 정세진 중국 명문 감상 2015 담당 강사 : 정세진
CG Programming (Modeling)
Implement of Input and Interaction
163535/A25002 컴퓨터 그래픽스 Chap 6. Shading Copyright ⓒ 2001 N Baek.
OpenGL Programming (III) 1. Drawing in 3D 2. Manipulating 3D Space
학습목표 5장. 오픈지엘 기본틀 논리적 입력장치를 설정하는 이유와 종류를 이해한다. 세 가지 입력모드의 차이점을 이해한다.
OpenGL 실습 1주차.
OpenGL 시작하기.
Lecture #7 제 4 장. 기하학적 객체와 변환 (2).
Chapter 5. 라이팅(Lighting)
POWER READY SYSTEM, H-FARM, POWER READY APP, BUDDY IS,
7장 디스플레이 리스트.
컬러 LED바 이해하기 목차 재료준비 및 브레드 보드 배선 구성하기 컬러 LED바 이해 및 프로그램 실습 응용 작품 만들기.
1장 – 그래픽스 시스템과 모델 2장 – 그래픽스 프로그래밍 3장 – 입력과 상호작용 4장 – 기하학적 객체와 변환
Practice - texture mapping
상태 관리 및 기하 오브젝트 그리기.
제 2 장. 그래픽스 프로그래밍 : OpenGL 개요/ 예제 프로그램
Sang Il Park Sejong University
그래픽스 시스템과 모델.
25장. 메모리 관리와 동적 할당.
AVR - Chapter 15 황 지 연.
인류의 분산 언어의 대 혼잡시기 창조,타락 홍수 바벨탑사건 아브라함 모세 BC 고조선 하/은/주 (창 11:7,9) 『[7] 자, 우리가.
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
제 3 장 아두이노 무조건 따라하기 - 스마트 폰으로 제어하는 아두이노 -.
도덕 1학년 1학기 2. 개성신장과 인격 도야:인물학습 석가모니 인물학습 -석가모니.
학습목표 5장. 오픈지엘 기본틀 논리적 입력장치를 설정하는 이유와 종류를 이해한다. 세 가지 입력모드의 차이점을 이해한다.
Mobile 3D Graphics (6장 퍼포먼스와 확장성) 교과목명 : 컴퓨터 그래픽스 특론 학 번 :
1장 그래픽스 시스템과 모델-이미지 형성, 모델, 구조
캡스톤 물리 음성 인식을 통한 무드 등 지금은 6시 55분 조.
Hanyang University Jungsik Park
OpenGL PROJECT 우광식 성기영 서창수 이인주.
5장. 오픈지엘 기본틀 학습목표 논리적 입력장치를 설정하는 이유와 종류를 이해한다. 세 가지 입력모드의 차이점을 이해한다.
버퍼 (Buffer).
Open GL GLUT 라이브러리 국내 관련사이트 다운받으세요.
Computer Graphics OpenGL 설치 및 설정
목차 INDEX 1. 회원가입 및 로그인 2. 업체정보 3. 제조검사 신청 4. 인보이스 5. 검사진행현황(현장검사 신청)
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
Draw the basic Geometry Objects
알아야 할 것들.
Chapter 4 컬러( COLOR ).
쿰란 쿰란 와디 항공촬영 .
제안개요 1. 프로그램 개요 및 세부일정 교육명 : 경북대학교 삼성 계열사 입사 대비 취업캠프
3.2 학교수학의 목표 수 학 과 신 원 경.
8. 아두이노를 이용한 아날로그 제어 - 스마트 폰으로 제어하는 아두이노 -.
4. 아두이노로 LED 제어하기 - 스마트 폰으로 제어하는 아두이노 -.
Byte Alignment ㈜ 웰컴정보시스템 김 정 은.
센서값 전송하기 WiFi 시리얼 보드 활용가이드 김영준 헬로앱스 (
OpenGL Introduction 컴퓨터 그래픽스 김 창 헌.
3D Shapes 3개 핵심 Properties가 존재 1.Material 표면의 재질을 설정합니다.
체크포인트 가정 내 일어나는 사고에 대해 알아보고 사고예방을 위해 주의한다. | 예방법 장소별 사고 – 방과 거실 1 2 높은 곳 에 물건 두지 않기! 날카로운 모서리는 천으로 씌우기!
Part III 애니메이션 Chapter 9 곡선.
18장. 다차원 배열 그리고 포인터.
오토베이스9 툴바 윈도우 설정 오토베이스 교육센터 그래픽 모듈 설정과 화면전환에 대하여 자세히 알아본다. <목차>
프로젝트 2차 발표 학번: 이름: 남준현.
4. Flip-Flops : S-R, D, J-K, T 컴퓨터 구조 실습 안내서.
성전기공식(안) 식 순 1. 기공미사 2. 기 공 식 3. 축 하 연 천주교 수원교구 퇴촌성당.
성공적인 입사지원서 작성법 제이비커리어 교육수석 소 은 선.
인터넷 쇼핑의 성격과 현황 시장과 고객관리 금융전공 박유진.
책을 읽읍시다  탈향 진지하게 설명해드림 1303 김소희 1309박지호 1315이지수.
2012년 9월 16일 바벨탑 사건과 셈의 후손들의 족보 ▣말씀:창세기 11:1-32 예 수 복 된 교 회.
2016년 제1차 운영위원회 평택시건강가정 ∙다문화가족지원센터
Presentation transcript:

4. OpenGL 상태들과 기본 도형들

Index OpenGL 상태 함수 기본 도형 다루기 기본 도형 예제 glGet() , glIsEnabled() glBegin() , glEnd() 점 (찍기,크기 변경,antialiasing) 선 (긋기,굵기 변경, antialiasing,패턴) 삼각형(그리기,triangle strip) 사각형(그리기,quad strip) 다각형(그리기,면 제거,변 숨기기, antialiasing,패턴) 기본 도형 예제 소스 분석 실행

4-1. OpenGL 상태 함수들(1/2) OpenGL 상태 기계 OpenGL 상태 함수들 상태기계 (state machine) OpenGl에게 무엇을 할 것인지를 알려주는 상태들과 그것들을 관리하는 것 OpenGL 상태 함수들 glGet() 상태 기계들의 현재 상태를 조회하는 함수 조회하고자 하는 상태를 지정

4-1. OpenGL 상태 함수들(2/2) glGet() (계속) glIsEnabled() Example of pname Error Codes glIsEnabled() OpenGL 기능의 활성화를 알아보고자 할 때 쓰이는 함수 GL_TRUE : 기능이 활성화 된 경우 GL_FALSE : 기능이 활성화 되지 않은 경우

4-2. 기본 도형 다루기 (1/3) OpenGL에서의 기본 도형 OpenGl 함수 점,선,삼각형 등의 기하학적인 객체 glBegin() , glEnd() glBegin() mode의 도형을 그리겠다는 선언 glEnd() glBegin()이 지정한 기본 도형의 랜더링을 마치겠다는 뜻 기본 도형의 종류를 입력

4-2. 기본 도형 다루기 (2/3) glBegin() , glEnd() (계속) Example of mode value 상수 설명 GL_POINTS 개별적인 점들 GL_LINES 연결되지 않은 선분들 GL_TRIANGLES 개별적인 삼각형들 GL_QUADS 개별적인 사각형들 GL_POLYGON 임의의 개수의 꼭지점을 가진 다각형 바른 사용 예 바른 사용 예 바르지 못한 사용 예 glBegin(GL_POINTS); …… glVertex3f(0.0,0.0,0.0); glEnd(); glBegin(GL_POINTS); …… glVertex3f(0.0,0.0,0.0); glBegin(GL_LINES); glEnd();

4-2. 기본 도형 다루기 (3/3) 기본 도형을 그리는 순서 ① glBegin(Glenum mode) 를 이용하여 어떤 도형을 그릴지 OpenGL에게 알려준다. ② glVertex() 등의 함수를 이용하여 점을 찍거나 선을 긋는다. ③ glEnd() 로 기본 도형의 랜더링을 끝낸다. 3차원 공간에 점을 찍는 소스 glBegin(GL_POINTS); for (int n = 0; n < 40; n++) { glColor3ub(rand() % 256, rand() % 256, rand() % 256); glVertex2i(rand() % g_width, rand() % g_height); } glEnd();

4-3. 3차원 공간 안에 점 찍기(1/3) 정점을 지정하는 함수 glVertex() 3차원 공간 상의 한 점을 지정 지정된 점은 glBegin(GLenum mode)에서 지정된 기본 도형의 종류에 따라 적절히 해석되어 표현 형식 : void glVertex[2,3,4] [d,f,I,s] [v] (…); [2,3,4] : 점의 차원 [d,f,I,s] : 데이터의 형식 [v] : 인자를 벡터로 전달 3차원 상의 0.0,0.0,0.0 과 0.0,1.0,0.0에 점을 하나 찍는 예제 GL_POINTS 로 지정되었으므로 각각의 점이 개별적으로 취급된다. glVertex glBegin(GL_POINTS); glVertex3f(0.0,0.0,0.0); glVertex3f(0.0,1.0,0.0); glEnd();

4-3. 3차원 공간 안에 점 찍기(2/3) 점 크기 변경 점의 Antialiasing void glPointSize(Glfloat size); 기본 크기는 1.0 현재의 점 크기는 GL_POINT_SIZE로 glGet()을 호출하여 확인 가능 점의 Antialiasing 공식적으로 점의 크기가 1.0인 것 만 가능 GL_POINT_SMOOTH를 인자로 하여 glEnable()호출 Antialiasing 확인 방법 GL_POINT_SMOOTH로 glGet()을 호출 glIsEnable(GL_POINT_SMOOTH)

4-3. 3차원 공간 안에 점 찍기(3/3) 점의 Antialiasing (계속) Antialiasing이 지원되는 크기 얻기 ① 점 크기의 최대/최소값을 얻는다. ② 인접한 지원 크기들 사이의 차이을 얻는다. 얻은 크기는 minPointSize , minPointSize+granularity , …. , maxPointSize 의 순이다. 인접한 antialiasing 크기 얻기 Glfloat sizes[2]; Glfloat granularity; glGetFloatv(GL_POINT_SIZE_RANGE,sizes); Glfloat minPointSize = sizes[0]; Glfloat maxPointSize = sizes[0]; glGetFloatv(GL_POINT_SIZE_GRANULARITY,&granularity);

4-4. 3차원 공간에서 선 긋기 (1/2) 선 긋기 선의 Antialiasing 선분의 양 끝을 지정하는 작업 지정된 정점의 수는 짝수여야 함 선의 Antialiasing Antialiasing On/Off On : glEnable(GL_LINE_SMOOTH); Off : glDisable(GL_LINE_SMOOTH); Antialiasing 확인 작업 glGet() 을 GL_LINE_SMOOTH로 호출 glIsEnable(GL_LINE_SMOOTH) 3차원 공간에 선분 긋기 glBegin(GL_LINES); glVertex3f(-2.0,-1.0,0.0); glVertex3f(3.0,1.0,0.0); glEnd(); glGetBooleanv(GL_LINE_SMOOTH, GLboolean *params )

4-4. 3차원 공간에서 선 긋기 (2/2) 점선 패턴 지정 점선 패턴 사용방법 선의 일부분이 그려지거나 그려지지 않게 하는 마스크 점선(dash line)같은 효과를 얻을 수 있음 사용방법 패턴 기능 켜기 glEnable(GL_LINE_STIPPLE) glLineStipple(GLint factor,GLushort pattern) – 패턴 지정 factor : 패턴의 각 비트가 반복되는 회수(range:1~256,default:1) Pattern : 16bit 비트맵 패턴

4-5. 3차원 공간에 다각형 그리기(1/6) 다각형의 기본 (삼각형,사각형,다각형) 다각형을 그리는 방법 여러 개의 점을 생성 각 점들이 특정한 영역을 생성 영역에 색을 칠함 다각형을 그리는 방법 void glPolygonMode(GLenum face, GLenum mode); face : 다각형의 전면과 후면을 구별 전면 : GL_FRONT 후면 : GL_BACK 양면 : GL_FRONT_AND_BACK mode 값 의 미 GL_POINT 각 정점이 개별적인 점으로 그려짐(glBegin(GL_POINTS)와 동일) GL_LINE 다각형의 각 변들이 선으로 그려짐 GL_FILL 다각형의 내부를 현재의 색으로 칠한다.

4-5. 3차원 공간에 다각형 그리기(2/6) 다각형의 면 제거(face culling) glEnable(GL_CULL_FACE) void glCullFace(Glenum mode); mode : GL_FRONT,GL_BACK,GL_FRONT_AND_BACK 다각형의 면 구분 polygon winding(감는 방법) 전면 : 반시계 방향 후면 : 시계 방향 void glFrontFace(Glenum mode); mode : GL_CCW(반시계 방향이 전면) , GL_CW(시계 방향이 전면) 다각형 그리기(전면) 다각형 그리기(전면) D A D A glBegin(GL_POLYGON); glVertex3f(A); glVertex3f(D); glVertex3f(C); glVertex3f(B); glEnd(); glBegin(GL_POLYGON); glVertex3f(A); glVertex3f(B); glVertex3f(C); glVertex3f(D); glEnd(); 전면 후면 C B C B

4-5. 3차원 공간에 다각형 그리기(3/6) 다각형의 변 숨기기 다각형의 Antialiasing glEdgeFlag() void glEdgeFlag(Glboolean isEdge); void glEdgeFlag(const Glboolean *isEdge); GL_TRUE : 변이 그려진다. (default) GL_FALSE : 변이 그려지지 않는다. 다각형의 Antialiasing glEnable(GL_POLYGON_SMOOTH) Default : Antialiasing 미적용

4-5. 3차원 공간에 다각형 그리기(4/6) 다각형 패턴 설정 다각형을 일정한 무늬로 채우도록 하는 것 glEnable(GL_POLYGON_STIPPLE) void glPolygonStipple(const Glubyte *mask); mask 인자는 비트맵 패턴을 담고 있는 32*32 크기의 바이트 배열에 대한 포인터 2차원에만 적용가능 다각형을 회전 시킬 경우 패턴은 회전하지 않음

4-5. 3차원 공간에 다각형 그리기(5/6) 삼각형 세 개의 꼭지점을 지정하여 생성 순서대로 세 개씩의 정점들을 하나의 삼각형으로 그림 여분의 정점은 무시 됨 Triangle strip (삼각형 띠) glBegin(GL_TRIANGLE_STRIP) 첫 번째 삼각형 : A,B,C 정점으로 삼각형을 그림 두 번째 삼각형 : 마지막 두 정점 B,C와 새로운 정점 D로 그림 Triangle fan (삼각형 부채) glBegin(GL_TRIANGLE_FAN) , 하나의 꼭지점 공유 다각형 그리기(전면) glBegin(GL_TRIANGLES); glVertex3f(-2.0,-1.0,0.0); glVertex3f(3.0,1.0,0.0); glVertex3f(0.0,3.0,0.0); glEnd();

4-5. 3차원 공간에 다각형 그리기(6/6) 사각형 다각형 glBegin(GL_QUADS) 사각형 띠 GL_QUAD_STRIP 다각형 glBegin(GL_POLYGON) glBegin()/glEnd() 쌍 안에서 하나의 다각형 만 그릴 수 있음

4-6. 기본 도형 예제 (1/10) Main Message Loop

4-6. 기본 도형 예제 (2/10) WndProc – Window message handler

4-6. 기본 도형 예제 (3/10) 윈도우 생성

4-6. 기본 도형 예제 (4/10) Wgl함수의 사용(DC&RC 생성 및 제거)

4-6. 기본 도형 예제 (5/10) GL_POINT , GL_LINE glColor3ub => 3은 red,green,blue u는 unsigned b는 byte

4-6. 기본 도형 예제 (6/10) GL_TRIANGLE,GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN 9개 정점 => 삼각형 7개 14개의 정점 => 삼각형 12개

4-6. 기본 도형 예제 (7/10) GL_QUAD

4-6. 기본 도형 예제 (8/10) GL_POLYGON 8각형

4-6. 기본 도형 예제 (9/10) Toggle Antialiasing

4-6. 기본 도형 예제 (10/10) Toggle Stippling , Rotate polygon mode GL_POINT GL_LINE GL_FILL