노력과 삽질 퇴적물

OpenGL ES: 기초 및 입문 (1) 본문

📂기초 및 세팅 note/2D & 3D

OpenGL ES: 기초 및 입문 (1)

MTG 2016. 8. 4. 20:11


OpenGL ES: 기초 및 입문 (1)

OpenGL ES: 기초 및 입문 (2)

OpenGL ES: 기초 및 입문 (3)

OpenGL ES: 기초 및 입문 (4)

OpenGL ES: 기초 및 입문 (5)






0. 필요한 파일


크로스 플랫폼: Xamarin(자마린) 앱 개발 (1), 0. 필요한 파일 참조






1. 주요 특징


1) OpenGL ES?

> OpenGL for Embedded Systems, 모바일 임베디드 기기를 위해 제작한 3D Graphics API

> [PDF]모바일 그래픽스 분야 기술 동향 [#] [#html버전]

세상밖으로... :: Android OpenGL ES 사용에 앞서 알아두면 좋은것



2) OpenGL과의 차이점

OpenGL과 OpenGL ES의 차이점 | GAMOO ENTERTAINMENT


① 지원 타입의 수를 줄였다. 대표적으로 GLdouble 타입을 지원하지 않는데 사실 OpenGL에서도 이 타입은 잘 사용되지 않았다. 라이트 버전에는 GLfloat도 없고 고정 소수점 타입인 GLfixed 타입을 대신 사용한다. 임베디드 시스템에는 부동소수점 연산을 하드웨어가 수행하지 못하므로 소프트웨어로 느리게 수행해야 하기 때문이다. GLbyte, GLubyte, GLshort 타입도 제거되었다.

② 즉시 모드를 지원하지 않는다. glBegin~glEnd 블록안에서 그리기 함수를 호출할 수 없고 정점 배열만 사용할 수 있다. 함수 호출 오버헤드를 줄이기 위해서이다. 여러 정보를 한 배열에 저장하는 인터리브 배열도 지원하지 않는다.

③ 사각형을 그리는 glRect 함수가 제외되었다. 그래서 모든 물체를 삼각형으로만 구성해야 한다. GL_QUADS, GL_POLYGON 모델도 제외되었다. 사실 이 기능들은 OpenGL에서도 잘 사용되지 않는 것이다.

④ 색상 인덱스 모드는 지원하지 않는다. 조명이나 텍스처 맵핑 등에 제약이 많다. OpenGL에서도 팔레트 모드는 원래 제약이 많았다.

⑤ 그외 폴리곤 모드, 피드백, 선택 기능, 누적 버퍼, 출력 목록, 속성 저장 기능을 지원하지 않는다.

⑥ 텍스처 맵핑은 2D만 지원된다.

⑥ 조명은 앞뒷면이 반드시 동일해야 한다. 재질 모드는 GL_AMBIENT_AND_DIFFUSE만 지원된다.

-SoEn:소프트웨어 공학 연구소, OpenGL ES



3) 버전별 차이

버전

 주요 특징

 호환

 ES 1.0

 2003년 발표.

 고정 파이프라인

> 조명, 정점, 색, 카메라 설정시 내장된 함수 사용

 OpenGL 1.3

 주요 플랫폼

안드로이드: 1.6부터 지원 (API Level 4)

 ES 1.1

  OpenGL 1.5
 주요 플랫폼
Nintendo 3DS[각주:1]

 ES 2.0

 2007년 발표.

 GLSL 문법(OpenGL Shader Language)인 셰이더 가능

> toon shader등이 가능(?)

 All about OpenGL ES 2.x

 programmable pipeline

 OpenGL 2.0
 
주요 플랫폼
안드로이드 2.2부터 지원 (API Level 8)
iOS: 5부터 지원

 ES 3.0

 2012년 발표.

 기존 표준인 OpenGL ES 2.0과의 호환성을 보장하도록 설계(OpenGL ES 3.0 is backwards compatible with OpenGL ES 2.0)[각주:2]

 OpenGL 2.0

 주요 플랫폼

안드로이드: 4.3부터 지원(jellybean mr2)

iOS: 7부터 지원

 ES 3.1

 2014년 발표.

 주요 플랫폼

안드로이드: 5.0부터 지원

 ES 3.2

 2015년 발표.

 


> OpenGL ES 3.0(左)とOpenGL ES 2.0(右)の比較






기타. 변경이력


일자

변경이력

2016-08-04

 초안

  1. https://en.wikipedia.org/wiki/OpenGL_ES#OpenGL_ES_1.1_2 [본문으로]
  2. https://en.wikipedia.org/wiki/OpenGL_ES#OpenGL_ES_3.0 [본문으로]