Windows/OpenGL

03. OpenGL 학습을 위한 기본 지식 - 그래픽 API와 OpenGL

Ohjeonghak 2014. 10. 11. 15:45
반응형

그래픽 API (Application Programming Interface)

 - 함수를 사용하여 프로그램을 작성하는데 직접 활용할 수 있도록 한 것 (라이브러리 함수)

 

 

 고수준 API
(High-Level API)
그림을 그리기 위한 실제적인 세부 과정을 명시하는 대신, 물체를 정의하고 물체 사이의
관계를 묘사하는 장면묘사 언어
Open Inventor, VRML, Java3D 등이 해당
=>직접적으로 장면 묘사
 저수준 API
(Low-Level API)
물체를 구성하는 기본요소의 정의부터 시작해서 실제 그림을 그리는 세부적인 과정을 일일이
명시 해야 한다.
(하드웨어와 직접 연관, OpenGL, Direct3D 등이 해당)
=>직접적으로 장면 묘사를 하지 않고, 구체적 프러시저를 호출

 

 

VRML (버멜 : Virtual Reality Modeling Language)

 - HTML : 웹 브라우저에서 하이퍼텍스트 기능을 가진 2차원 그래픽을 위한 언어

      ↓

 - XTML : 웹 환경에서 어플리케이션에 데이터 교환이 가능하도록 하는 새 표준 언어

      ↓

 - VRML : 인터넷에서 3차원 장면을 묘사하는 명령어를 인터넷을 통해 주고 받기 위한 것

   엄밀한 의미로 라이브러리 함수 호출. 즉, API다

   경우에 따라 함수도 프로그램 언어의 일종으로 간주할 수 있고 따라서 함수를 명령어 라고도 함.

 

 

OpenGL 이란?

  OpenGL 자체는 프로그래밍 언어가 아니라 API 이며, OpenGL 라이브러리를 사용하기 위해서는 라이브러리를 다운 받아서 IDE에 추가한 뒤 보통 C/CPP에서 헤더파일처럼 간단히 include 하고 하용하면 된다.

 OpenGL은 cross platform을 지향하고 어떤 프로그래밍 언어든지 사용해도 무방하다. 참고로 OpenGL 자체는 C 기반으로 제작된 그래픽 API 라이브러리이다.

 

OpenGL의 설계 원리

 범용성  - 워크스테이션, 수퍼 컴퓨터, 개인용 컴퓨터, 운영체제에 무관
 효율성  - 그래픽 하드웨어의 가속 기능을 최대한 발휘
 - 회사마다 서로 다른 기능, 공통적인 부분을 찾아내어 그 성능을 극대화
 - 공통 부분이 아닌 것에 대해서는 활성화 또는 비활성화 등 기능 모드를 제공
 독립성  - 기능간의 독립성을 최대한 보장, 기능끼리 서로 얽혀 발생하는 오류를 방지
 완전성  - 특정 하드웨어 기능에 대해서는 ARB 확장 형태로 명령어를 제공
 - 다수의 하드웨어가 확장 기능을 지원하면 표준 기능으로 변경
 - 소프트웨어적으로라도 실행할 수 있도록 배려
 상호작업성  - 그래픽 명령은 A 컴퓨터에서 내리되 실행은 B 컴퓨터에서 할 수 있도록 제공
 - 클라이언트-서버 모델 (client-server model) 지원
 - 성능이 낮은 클라이언트 컴퓨터가 고성능 서버를 이용

 

 

반응형