1. OpenGL (Open Graphics Library)
ㅇ 다양한 그래픽스 기능을, 플랫폼 독립적인 라이브러리 형태로 제공하는, API 소프트웨어 규격
- (산업계 실질 표준)
ㅇ 역사
- 1992년 실리콘 그래픽사에서 IRIS GL를 공개
- SGI,DEC,IBM,Microsoft社 등이 OpenGL ARB 라는 공식기구 결성
- 1992년 1.0, 1995년 1.1, 2004년 2.0, 2008년 3.0, 2010년 4.0, 2014년 4.5 발표
ㅇ 그래픽스 하드웨어 발전에 맞추어 지속 발전 진화하는 API
※ Khronos Group
- OpenGL의 공식 표준 제정,유지,개정을 담당하는 비영리 산업 컨소시엄
- GPU 제조사, 소프트웨어 기업 등 다수의 회원사가 참여
- OpenGL, OpenGL ES, Vulkan, OpenCL 등 그래픽·병렬 컴퓨팅 표준을 관리
* 실제 구현(드라이버)은, NVIDIA,AMD,Intel 같은 하드웨어/드라이버 업체가 담당
2. OpenGL 특징
ㅇ 그래픽스 하드웨어 및 운영체제에 독립적인 소프트웨어 인터페이스 (API) 규격
- 실질적인 라이브러리 구현은, 대부분 그래픽 카드 제작사에 의해 개발됨
ㅇ 저수준의 그래픽스 규격
- 픽셀 단위가 아닌 객체 단위로, 프로그래밍이 가능토록 함
ㅇ 약 250여개의 함수 호출을 이용 가능
- 단순 기하학적 도형에서 복잡한 삼차원 그래픽 생성 가능
3. OpenGL 라이브러리
ㅇ OpenGL 코어 라이브러리
- 운영체제 플랫폼에 독립적이므로, 입력,출력 루틴 등이 포함되지 않음
- 대신에, 시스템별 라이브러리 사용 필요
. X윈도시스템 : GLX (OpenGL Extension to X Window System)
. 애플시스템 : AGL (AppleGL)
. MS社 윈도우즈 : WGL (Windows to OpenGL)
ㅇ OpenGL 확장 기능 라이브러리
- 코어 기능에 더하여, 하드웨어 공급업체에서 제공
- 통상, 해당 업체를 나타내는 확장명이, 함수,상수 이름에 붙음
. 폭넓게 수용되면, `EXT`,`ARB` 등이 붙음
ㅇ 운영체제별 라이브러리
- X 윈도 시스템 : GLX
- 애플社 시스템 : AGL (AppleGL)
- MS社 시스템 : WGL (Windows to OpenGL)
4. OpenGL 함수
ㅇ 함수 이름
- 접두어 'gl'로 시작, 작업 명령어의 첫 문자를 대문자로 함
- 작업 내용, 인수 수, 인수 형태를 알 수 있음
* 함수 이름 만 보고도, 대략 어떤 작업과 인수의 형태,수를 알 수 있음
ㅇ [명령어 형식]
return_type <lib_prefix> FunctionName <arg_count><arg_type>{v} (<arguments>);
- return_type : 함수 수행 후 되돌려받는 데이터형
- lib_prefix : 함수 이름 앞에 붙이는 접두어로, 함수가 선언된 라이브러리를 표시함
- FunctionName : 명령어 이름
- arg_count : 함수가 갖는 인수의 수
- arg_type : 인수의 데이터형
- v : 인수가 벡터인 경우 첨가
5. [참고사항]
ㅇ 랜더링 파이프라인
- 정점 데이터 → 정점 세이더 → 테셀레이션 → 기하 세이더 → 정점 포스트 프로세스
→ 프리미티브 조립 → 래스터화 → 프래그먼트 세이더 (픽셀 데이터) → 샘플 미디어 연산
→ 표시 데이터
ㅇ 정점 데이터 (vertex)
- 표시의 기본이 되는 입력 데이터
. 1개 점정 데이터 : 점, 2개 정점 데이터 : 직선, 3개 정점 데이터 : 삼각형 등
ㅇ 세이더 (shader)
- 정점 정보들을 화면에 보여질수 있도록, 변환하는 작업을 하는 프로그램 (명령어 집합)