일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- MFC 윈도우 프로그래밍
- 핵심 API로 배우는 윈도우프로그래밍
- 컴퓨터 구조
- 베지에 곡선
- c4d
- 렌더링
- MFC
- 윈도우 프로그래밍
- Graphics
- 윈도우프로그래밍
- 컴퓨터 아키텍쳐
- win32
- Geometry Modeling
- 셰이더프로그래밍
- modeling
- Mesh Processing
- OpenGL
- 운영체제
- 그래픽스
- 윈도우 구조
- 오픈지엘
- shader
- 윈도우
- bezier curve
- Win32 API
- 그래픽스기초
- denoising
- 셰이더
- shader programming
- window programming
- Today
- Total
오다기리 박의 알고리즘 노트
[OpenGL로 배우는 컴퓨터 그래픽스] Chapter 04. 오픈지엘 API 본문
Chapter 04. 오픈지엘 API
Section 01. 그래픽스 표준
ISO 표준
컴퓨터 그래픽스 : “하드웨어와 소프트웨어를 사용하여 물체와 물체영상을 생성, 변형, 디스플레이, 저장하는 것”
주전산기 독립성 : 동일한 프로그램을 가지고서 다양한 모든 하드웨어에서 사용할 수 있어야 한다.
장비 독립성 : 입출력 장비의 종류가 달라도 동일 기능을 수행하기 위한 프로그램 명령은 동일해야 한다.
프로그램 언어 독립성 : 프로그램 작성에 어떠한 프로그램 언어를 사용해도 된다.
운영자 이식성 : 새로운 프로그램 사용법을 누구라도 쉽게 터득할 수 있어야 한다.
기본요소와 시스템 리스트
…
GKS, PHIGS
그래픽스 표준에의한 분류
응용 프로그램 레벨 : 응용 프로그램이 지켜야 할 표준을 추상적인 수준에서 서술하는 것
가상 레벨 : 출력되어야 할 내용을 기본요소를 사용하여 서술하는 것
논리적 레벨 : 주어진 장비에서 해당 기본요소를 그리기 위해 필요한 과정을 서술
물리적 레벨 : 개별 입출력 장비에 관한 내용 서술
ISO 그래픽 표준의 흐름
GKS (Graphical Kernel System) : 2차원 위주, 전역 좌표계, 정규화 장치 좌표계, 장치 좌표계
PHIGS(Programmer’s Hierarchical Interactive Graphics System) : 3차원 모델링, 가시화, 전역 좌표계, 정규화 장치 좌표계, 장치 좌표계, 시점, 가시부피
그래픽 파일
비트맵 파일 : 단순히 화면 화소값을 저장
GKS 메타파일 : 그림을 만들어 낼 떄 사용한 순차적 명령어들 저장
PHIGS 메타파일 : GKS 메타파일의 내용을 포함 + 응용 프로그램 레벨에서 기본 요소 사이의 관계까지 저장(ex. CSG의 불리언 연산의 내용)
언어 바인딩
그래픽 소프트웨어 개발자를 위한 부분
Section 02. API
그래픽 API
API : 함수를 이용하여 프로그램을 작성하는데 직접 활용할 수 있도록 한 라이브러리 함수
직접 하드웨어를 제어하는 명령 대신 그보다 상위 개념인 라이브러리 함수를 호출함으로써 손쉽게 응용 프로그램 작성 가능
응용프로그램이 라이브러리 함수 호출 -> 드라이버 소프트웨어에 의해 해당 하드웨어를 제어하는 어셈블리 명령어로 바뀜
High-Level 그래픽 API
그림을 그리기 위한 실제적인 세부 과정을 명시하는 대신, 물체를 정의하고 물체 사이의 관계를 묘사함으로써 프로그램 작성 완료
ex) Open Inventor, VRML
Low-Level 그래픽 API
물체를 구성하는 기본요소의 정의부터 시작해서 실제 그림을 그리는 세부적인 과정을 일일히 명시
그래픽 메모리, 그래픽 가속 칩 등 하드웨어와 밀접함 : 하드웨어 성능을 최대한 발휘 가능
ex) OpenGL, Direct3D
Section 03. 오픈지엘 개괄
API 레벨
API 발전과정
1982년 실리콘 그래픽스(SGI)사가 자사의 워크스테이션용 그래픽 하드웨어를 파이프라인화하기 위해 개발된 API가 Iris GL(GL) -> 아이리스 지엘이 이후 고성능 그래픽 카드를 장착한 개인용 컴퓨터에 이식되기 시작하며 openGL이라 부름 ->고수준 API처럼 어떤 장며을 묘사한 것이 아니라, 묘사된 내용으로부터 그 장면을 그려내기 위해 필요한 구체적인 프로시져에 해당한다.
GL 설계원리
범용성
대부분의 하드웨어에서 실행가능
소프트웨어 면에서 운영체제 무관하게 설계
효율성
그래픽 프로세서 칩이나 프레임 버퍼 등 그래픽 하드웨어의 가속 기능을 최대한 발휘하기 위해 호환성 지님
독립성
기능간의 독립성이 보장됨
완전성
하드웨어 기능을 대부분 수용한다.
공통된 기능이 아닌 특정 하드웨어 기능에 대해서는 ARB확장 형태로 명령어 제공
상호 작업성
파이프라인과 상태변수
파이프라인
그래픽 처리 작업을 기능별로 세분하여 이를 순차적으로 배치한 것
GPU의 처리속도를 획기적으로 개선한 것
파이프라인 구조를 활용하면 모든 서브 프로세서가 동시에 가동되기 때문에 전체 처리속도가 빨라진다. (서브 프로세싱은 하드웨어로 구현된다)
상태변수
상태변수(=그래픽 컨텍스트) : 물체가 어떻게 그려져야 할지를 표현
GL은 단지 서브 프로세서에 파라미터를 전달하는 일을 함
시스템 테이블
GL 프로그램이 상태변수 값을 설정하면 그 값이 상태 테이블에 기록되고, 개별 파이프라인 프로세서는 필요한 상태변수 값을 이 테이블로부터 읽어서 프로세스를 실행한다.
모드(Modes)
상태변수보다 포괄적인 개념
조명, 텍스처 등과 같은 종류의 상태변수
조명 모드를 비활성화하면 조명에 관련된 모든 상태변수가 자동으로 비활성화됨
Section 04. 오픈지엘 프로그래밍
명령어
GL은 처리속도를 높이기 위해 객체지향을 채택하지 않음
프로그램 구성요소
지엘 라이브러리(GL : OpenGL Core Library)
렌더링 기능을 제공하는 함수 라이브러리
지엘 유틸리티 라이브러리(GLU : OpenGL Utility Library)
지엘 라이브러리의 도우미
다각형 분할(Tessellation), Projection, Quadric Surface, NURBS(Non-Uniform Rational B-Spline) 등 고급기능을 제공하는 함수로서 GL 함수로 작성되어있음
지엘 유틸리티 툴 킷(GLUT : OpenGL Utility Toolkit)
사용자 입력을 받아들이거나 화면 윈도우를 제어하기 위한 함수로서 윈도우 운영체제가 실행하는 기능들
GL 프로그램과 그 프로그램이 돌아가는 윈도우 운영체제 사이의 인터페이스
GL의 일부가 아닌 Freeware
GLUT와 윈도우 운영체제
운영체제 역할
프로그램 실행 시 프로그램을 제어
GL 프로그램 실행의 시작 명령을 내리는 것도 운영체제
GL 요청에 따라 새로운 윈도우 만들기
GL의 렌더링 작업이 끝났을 때 윈도우 안에 그 결과를 보이는 함수를 호출
마우스 클릭시 상호작용에 필요한 함수 호출
GLUT
'컴퓨터 그래픽스 > OpenGL' 카테고리의 다른 글
[OpenGL로 배우는 컴퓨터 그래픽스] Chapter 06. 모델변환과 시점변환 (0) | 2019.02.14 |
---|---|
[OpenGL로 배우는 컴퓨터 그래픽스] Chapter 05. 오픈지엘 기본 틀 (0) | 2019.02.14 |
[OpenGL로 배우는 컴퓨터 그래픽스] Chapter 03. 그래픽 컬러처리 (0) | 2019.02.14 |
[OpenGL로 배우는 컴퓨터 그래픽스] Chapter 02. 그래픽 하드웨어 (0) | 2019.02.14 |
[OpenGL로 배우는 컴퓨터 그래픽스] Chapter 01. 컴퓨터 그래픽스란? (0) | 2019.02.14 |