일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- c4d
- Graphics
- shader
- MFC
- 셰이더
- 윈도우 프로그래밍
- 셰이더프로그래밍
- 렌더링
- 윈도우 구조
- Mesh Processing
- 베지에 곡선
- 오픈지엘
- OpenGL
- 컴퓨터 아키텍쳐
- bezier curve
- 윈도우프로그래밍
- modeling
- Geometry Modeling
- 그래픽스
- 핵심 API로 배우는 윈도우프로그래밍
- 컴퓨터 구조
- 운영체제
- 그래픽스기초
- shader programming
- window programming
- 윈도우
- win32
- denoising
- MFC 윈도우 프로그래밍
- Win32 API
- Today
- Total
오다기리 박의 알고리즘 노트
[OpenGL로 배우는 컴퓨터 그래픽스] Chapter 05. 오픈지엘 기본 틀 본문
Chapter 05. 오픈지엘 기본 틀
Section 01. 그래픽스 입력장치
물리적 입력장치
포인팅 장치 : 마우스, 조이스틱, 트랙볼, 스페이스볼…
논리적 입력장치
좌표 입력기, 연속좌표 입력기, 문자열 입력기, 스칼라 입력기, 메뉴선택 입력기, 물체선택 입력기…
물체 선택
…
Section 02. 입력 모드
Measure : 입력장치가 응용 프로그램에 넘겨주는 값
Trigger : measure를 가져가라는 신호
리퀘스트 모드
프로그램이 실행중에 메져를 요구하는 방식
Request_Locator(Device_ID, &Measure);
샘플 모드 (직접 모드)
프로그램이 메져를 요구하면 메져 프로세서는 무조건 현재 메져를 제공
Sample_Locator(Device_ID, &Measure);
이벤트 모드
리퀘스트나 샘플모드에서는 프로그램이 Device_ID로 지정한 물리적 장치 이외의 어떤 입력장치로부터의 입력도 무시된다.
사용자가 선택한 입력장치가 우선권을 쥔다.
아무 때나 사용자가 임의로 선택한 입력장치를 사용하여 입력 데이터를 프로그램에게 전달할 수 있고, 프로그램은 이러한 요구에 맞춰서 해당 작업을 수행해야 한다.
콜백함수(이벤트 처리기) : 응용 프로그램이 이벤트를 처리하는 방법. 이벤트 타입별로 프로그램이 수행해야 할 내용을 함수로 나타낸 것
Section 03. 지엘 프로그램 예
입력 콜백과 GLUT
GLUT는 드라이버로부터 받은 이벤트 레코드를 참고로 이벤트 타입을 판단하고 테이블(콜백함수 등록)을 검색하여 그에 맞는 콜백함수를 호출
이때 이벤트 레코드의 메져는 파라미터 형태로 콜백함수에게 전달
Section 04. 윈도우와 뷰포트
정규좌표와 화면좌표
윈도우, 뷰포트 GLUT 모델링
뷰포트 : 윈도우 내부에 설정한 작은 창
뷰포트 왜곡
왜곡 해결책 : 윈도우 종횡비를 원래 장면의 종횡비와 일치하도록 규제, 윈도우 내부에 별도의 원래 장면의 종횡비와 일치하는 뷰포트를 열기GLUT의 윈도우와 뷰포트(glViewport)
GLUT 함수는 화면 좌상단을 원점으로 하는 일반적인 윈도우 운영체제의 화면 좌표계를 따름.
일단 만들어진 윈도우 내에서 그림을 그리기 위한 GL 함수는 윈도우 좌하단을 원점으로 하는 자체의 화면 좌표계를 사용한다.
Section 05. 콜백 프로그래밍
Reshape 콜백
glOrtho : 장면을 포착하는 틀
glViewport : 틀에 잡힌 장면을 컴퓨터 화면에 뿌리는 틀
두개의 틀의 종횡비가 일치한다면 물체에 왜곡은 일어나지 않는다
Mouse 콜백
일반적으로 모델링 이후 투상면이 정의되고 뷰포트는 투상면이 정의된 이후 결정된다.
Section 06. 애니메이션과 더블 버퍼링
비디오 컨트롤러 (RAMDAC)
비디오 컨트롤러는 프레임 버퍼에 기록된 디지털 색 값을 읽고 전압 보기표를 참조로 해당 아날로그 전압을 찾아낸 후, 전자총에 해당 전압을 가한다.
비디오 컨트롤러의 화면 재생속도 > 그래픽 프로세서가 프레임 버퍼에 쓰는 작업 속도 로 인해 화면 깜빡거림 현상 발생
더블 버퍼링
비디오 컨트롤러가 프론트 버퍼의 내용을 읽고 출력하는 동안 그래픽 프로세서는 백 버퍼에 새로운 내용을 써나간다.
비디오 컨트롤러가 쓰기를 완전히 마치면 그제야 비디오 컨트롤러는 백버퍼로 스위칭하여 새로이 기록된 내용을 읽어간다. 동시에 그래픽 프로세서는 이전의 프론트 버퍼로 스위칭하여 다시 새로운 내용을 써나간다.
Section 08. 디스플레이 리스트
GL 함수의 실행 모드
직접 모드 : 물체를 화면에 그림과 동시에 물체 생성과 관련된 정보를 파기
보류 모드 : 정의된 물체 정보를 그대로 유지하고 재사용. 즉 물체를 다시 그려낼 때 코드를 실행하지 않고 이미 정의된 물체를 컴파일된 형태로 재사용함을써 빠른 속도 보장 -> 디스플레이 리스트에 의해 이루어짐
디스플레이 리스트
반복적으로 실해오디어야 할 일련의 GL 명령어를 디스플레이 리스트 내부에 포함시킴으로써 프로그램 실행시간은 빨라진다.
'컴퓨터 그래픽스 > OpenGL' 카테고리의 다른 글
[OpenGL로 배우는 컴퓨터 그래픽스] Chapter 07. 투상변환과 뷰포트변환 (0) | 2019.02.14 |
---|---|
[OpenGL로 배우는 컴퓨터 그래픽스] Chapter 06. 모델변환과 시점변환 (0) | 2019.02.14 |
[OpenGL로 배우는 컴퓨터 그래픽스] Chapter 04. 오픈지엘 API (0) | 2019.02.14 |
[OpenGL로 배우는 컴퓨터 그래픽스] Chapter 03. 그래픽 컬러처리 (0) | 2019.02.14 |
[OpenGL로 배우는 컴퓨터 그래픽스] Chapter 02. 그래픽 하드웨어 (0) | 2019.02.14 |