OpenGL ES 소개

OpenGL ES는 OpenGL for Embedded Systems의 약자로, OpenGL을 만든 Khronos Group에서 모바일 임베디드 기기를 위해 제작한 3D Graphics API이다.

OpenGL ES는 OpenGL을 기반으로 임베디드 시스템에 최적화된 API를 제공한다. 거의 쓰이지 않거나 중복된 기능을 수행하는 API들을 과감히 제거하고 임베디드 시스템에 적합한 데이터 타입을 추가하는 등 최대한 간결하고 작게 만드는 것을 목표로 하면서도 기존의 OpenGL을 사용하여 구현할 수 있는 거의 대부분의 기능을 똑같이 구현할 수 있도록 디자인 되었다.



OpenGL ES를 사용하는 이유

모바일 3D API로 OpenGL ES를 사용하면 다음과 같은 이점이 있다.

  • 업계 표준으로 자리잡은 시스템의 사용으로 폭넓은 기술 지원을 받을 수 있으며, 로열티를 받지 않는 오픈소스 API이기 때문에 누구나 쉽게 사용할 수 있다.
  • 다양한 사양의 모바일 환경을 감안하여 최소화, 최적화된 API를 제공하기 때문에 최소한의 저장 공간, 메모리, 배터리를 사용한다는 장점이 있다.
  • OpenGL ES의 그래픽스 파이프라인은 각각의 API가 소프트웨어만으로도 구현이 가능하고, 소프트웨어와 하드웨어를 둘다 사용하여 구현할 수도 있으며, 오로지 하드웨어에서 동작하게 구현할 수 있게 해 준다. 따라서 사양이 낮은 모바일 단말에서는 소프트웨어만 사용하여 동작하게 하고, 보다 성능이 좋은 단말에서는 하드웨어 가속을 받아 동작하게 제작하는 것이 가능하다.
  • OpenGL ES 익스텐션 기능을 통해 새로운 하드웨어도 쉽게 OpenGL 기능으로의 접근이 가능해지고, 이를 통해 OpenGL ES 자체도 끊임없이 진화하게 된다.
  • OpenGL ES는 OpenGL을 기반으로 하여 제작되었기 때문에 보다 쉽게 배울 수 있다.
  • OpenGL을 포함하여 OpenGL ES와 관련된 다양한 검증된 서적 또는 문서가 있기 때문에 개발자들은 이를 참고하면 보다 파워풀한 프로그램을 제작할 수 있다.



OpenGL ES 1.1 & 2.0

OpenGL ES에는 크게 두 가지 버전이 있다. 
OpenGL ES 1.1은 OpenGL 1.5와 호환되는 버전으로, fixed function hardware를 위한 API를 제공한다. 1.1 버전에서는 기존 OpenGL에서 자주 쓰이던 glBegin/glEnd, color index mode, GL_QUAD/GL_POLYGON과 같이 코드 크기 및 성능에 나쁜 영향을 미치는 primitive들이 쓰이지 않는 대신, Vertex Array, Vertex Buffer Object (VBO)등의 API를 사용하고 있으며, full transform, lighting, multitexturing, fixed point, floating point 등의 기능을 충실히 제공하고 있다.

OpenGL ES 2.0은 OpenGL 2.0과 호환되는 버전으로, shader를 사용한 programmable hardware를 위한 API를 제공한다. Fixed function pipeline을 제거하고 vertex shader와 fragment shader를 사용하고 있으며, 이를 위해 GLSL ES라고 하는 shading language를 지원한다. 

OpenGL ES 1.1과 2.0은 서로 호환되지 않기 때문에 1.1로 작성된 코드를 2.0에서 돌리기 위해서는 코드를 새로 작성해야 하며, 2.0 코드를 1.1에서 돌릴 때도 마찬가지이다.

아래는 각 버전별로 정리되어 있는 스펙 문서이다.

   Full Specification 문서
Difference Specification 문서
(OpenGL 버전과 제공되는 API를 비교해 놓은
 OpenGL ES 1.1
 1.1.12 Full spec PDF
1.1.12 Diff Spec PDF
 OpenGL ES 2.0
 2.0.24 Full spec PDF
2.0.24 Diff Spec PDF



adopted from http://zorg.tistory.com/128

Leave a Reply

Your email address will not be published. Required fields are marked *