맨위로가기

OpenGL ES

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

OpenGL ES는 임베디드 시스템과 모바일 장치를 위한 3D 그래픽 API이다. OpenGL의 부분 집합으로, 여러 버전이 존재하며, 각 버전은 OpenGL의 특정 버전을 기반으로 한다. OpenGL ES는 1.0, 1.1, 2.0, 3.0, 3.1, 3.2 버전을 거치며 발전해왔고, 각 버전마다 기능이 추가 및 개선되었다. OpenGL ES는 안드로이드, iOS 등 다양한 플랫폼에서 3D 그래픽을 구현하는 데 사용되며, 웹 브라우저에서 3D 그래픽을 구현하는 WebGL의 기반이 되기도 한다. OpenGL ES는 확장을 통해 기능을 확장할 수 있으며, ANGLE 라이브러리를 통해 OpenGL ES를 지원하지 않는 플랫폼에서도 OpenGL ES 애플리케이션을 실행할 수 있다. 애플은 Metal API를 우선시하면서 OpenGL ES 지원을 중단했다. OpenGL ES 코드는 데스크톱 OpenGL 환경에서 비교적 쉽게 실행될 수 있다.

더 읽어볼만한 페이지

  • OpenGL - WebGL
    WebGL은 웹 브라우저에서 3차원 그래픽을 렌더링하기 위한 API이며, OpenGL ES를 기반으로 개발되어 다양한 웹 브라우저와 모바일 환경에서 지원된다.
  • OpenGL - 메사 (컴퓨터 그래픽스)
    메사는 다양한 운영체제에서 3D 그래픽 하드웨어 가속을 지원하는 자유-오픈 소스 그래픽 라이브러리로, OpenGL, Vulkan, OpenCL 등 다양한 그래픽 API를 지원하며 소프트웨어 렌더링 기능도 제공한다.
  • 3차원 그래픽스 API - WebGL
    WebGL은 웹 브라우저에서 3차원 그래픽을 렌더링하기 위한 API이며, OpenGL ES를 기반으로 개발되어 다양한 웹 브라우저와 모바일 환경에서 지원된다.
  • 3차원 그래픽스 API - Direct3D
    Direct3D는 마이크로소프트가 개발한 3차원 그래픽스 API로, 그래픽 하드웨어 가속을 지원하며 렌더링 파이프라인을 통해 데이터를 화면의 이미지로 변환하며, 윈도우 운영체제 및 다른 플랫폼에서도 사용 가능하다.
  • API - Tk (소프트웨어)
    Tk는 Tcl 스크립팅 언어의 크로스 플랫폼 GUI 툴킷으로, 다양한 플랫폼 이식과 여러 프로그래밍 언어 바인딩을 지원하며 사용자 정의 가능한 위젯들을 제공한다.
  • API - ASIO
    ASIO는 독일 스타인버그에서 개발한 오디오 입출력 API 규격으로, 낮은 지연 시간과 멀티 채널 I/O를 지원하며 윈도우 운영체제에서 주로 사용된다.
OpenGL ES - [IT 관련 정보]에 관한 문서
일반 정보
유형3D 그래픽 API
개발크로노스 그룹
최초 릴리스2003년 7월 28일
최신 버전3.2
최신 릴리스 날짜2015년 8월 10일
프로그래밍 언어C
운영체제크로스 플랫폼
플랫폼크로스 플랫폼
라이선스로열티 없는 무료 라이선스
웹사이트OpenGL ES 공식 웹사이트

2. 버전

OpenGL ES는 현재 여러 버전의 규격이 존재한다. OpenGL ES 1.0은 OpenGL 1.3 규격을 기반으로, OpenGL ES 1.1은 OpenGL 1.5 규격을 기반으로, OpenGL ES 2.0은 OpenGL 2.0 규격을 기반으로 설계되었다.

OpenGL ES 1.x 계열에는 1.0과 1.1의 두 가지가 존재한다. 1.x 계열은 그래픽스 파이프라인 처리가 고정된 셰이더 (고정 기능 셰이더)만 지원하며, 프로그래밍 가능한 셰이딩 기능 (프로그래머블 셰이더)은 지원하지 않는다. 이 때문에 플랫 셰이딩 또는 구로 셰이딩과 같은, 사용자 정의가 불가능한 정점 단위의 셰이딩 (음영 계산) 및 질감 표현만 지원된다.

OpenGL ES 2.0은 프로그래머블 셰이더를 지원하는 사양이며, 셰이딩 언어 GLSL ES를 지원하는 반면, 고정 기능 셰이더는 삭제되었다. OpenGL ES 2.0은 1.x 계열과의 완전한 하위 호환성은 없다.

OpenGL ES 3.0 규격[13]은 2012년 8월에 공개되었다.[14] OpenGL ES 2.0과 하위 호환되며, WebGL 2.0과 부분적으로 호환된다.[15]

OpenGL ES 3.1 사양[19]은 2014년 3월에 공개되었다. OpenGL ES 3.1은 컴퓨트 셰이더, 독립적인 버텍스 및 프래그먼트 셰이더, 간접 드로우 명령 등의 새로운 기능을 제공한다.[20] OpenGL ES 3.1은 OpenGL ES 2.0 및 3.0과 하위 호환된다.

OpenGL ES 3.2 사양[22]은 2015년 8월에 공개되었다. GPU에서 복잡한 장면을 효율적으로 처리하기 위한 지오메트리 및 테셀레이션 셰이더, 더 높은 정밀도의 연산에서 유연성을 높이기 위한 부동 소수점 렌더 타겟, 텍스처를 처리하는 데 사용되는 ASTC 압축 등의 기능을 제공한다.

2. 1. OpenGL ES 1.0

OpenGL ES 1.0은 2003년 7월 28일에 공개되었다.[2] 기존의 OpenGL 1.3 API를 기반으로 만들어졌으며, 내장 프로세서의 제한된 계산 능력을 고려하여 많은 기능이 제거되고 일부 기능이 추가되었다.

OpenGL과 OpenGL ES의 중요한 차이점 중 하나는 OpenGL ES에서는 `glBegin`과 `glEnd`를 사용하여 OpenGL 라이브러리 호출을 묶을 필요가 없다는 점이다. 또한, 정점 배열을 선호하도록 프리미티브 렌더링 함수의 호출 의미가 변경되었고, 고정 소수점 데이터 유형이 정점 좌표에 도입되었다. 이는 부동 소수점 장치(FPU)가 없는 경우가 많은 내장 프로세서를 지원하기 위해서였다.

1.0 버전에서는 인터페이스를 가볍게 만들기 위해 다음과 같은 많은 기능과 렌더링 프리미티브가 제거되었다.

  • 쿼드 및 폴리곤 렌더링 프리미티브
  • 텍스젠, 라인, 폴리곤 스티플
  • 폴리곤 모드와 안티앨리어싱된 폴리곤 렌더링은 지원되지 않지만, 멀티샘플을 사용한 렌더링은 가능 (알파 경계 프래그먼트 대신)
  • `ARB_Image` 픽셀 클래스 연산, 비트맵, 3D 텍스처는 지원되지 않음
  • 프론트버퍼 및 누산 버퍼를 포함한 몇 가지 드로잉 모드 제거
  • 개별 픽셀 복사를 위한 비트맵 연산, 평가기 및 사용자 선택 연산은 허용되지 않음
  • 디스플레이 목록 및 피드백 제거, 상태 속성에 대한 푸시 및 팝 연산 제거
  • '후면' 매개변수 및 사용자 정의 클립 평면을 포함한 일부 재료 매개변수 제거


OpenGL ES 1.0은 심비안 OS와 안드로이드 플랫폼의 공식 3D 그래픽 API로 채택되었다.[26][27][28] QNX에서도 지원된다.[29] 또한, 플레이스테이션 3의 공식 그래픽 API 중 하나로 지원되며,[30] Nvidia의 Cg를 GLSL 대신 사용한다.[31] 플레이스테이션 3은 OpenGL ES 2.0 버전의 여러 기능도 포함하고 있다.

확장 이름정렬 번호세부 정보
[https://www.khronos.org/registry/OpenGL/extensions/OES/OES_byte_coordinates.txt OES_byte_coordinates]OpenGL ES 확장 #4(이전 OpenGL 확장 #291)
[https://www.khronos.org/registry/OpenGL/extensions/OES/OES_compressed_paletted_texture.txt OES_compressed_paletted_texture]OpenGL ES 확장 #6(이전 OpenGL 확장 #294)
[https://www.khronos.org/registry/OpenGL/extensions/OES/OES_fixed_point.txt OES_fixed_point]OpenGL ES 확장 #9(이전 OpenGL 확장 #292)
[https://www.khronos.org/registry/OpenGL/extensions/OES/OES_query_matrix.txt OES_query_matrix]OpenGL ES 확장 #16(이전 OpenGL 확장 #296)
[https://www.khronos.org/registry/OpenGL/extensions/OES/OES_read_format.txt OES_read_format]OpenGL ES 확장 #17(이전 OpenGL 확장 #295)
[https://www.khronos.org/registry/OpenGL/extensions/OES/OES_single_precision.txt OES_single_precision]OpenGL ES 확장 #18(이전 OpenGL 확장 #293)
선택 사항Mesa (대부분의 드라이버)
[https://www.khronos.org/registry/OpenGL/extensions/OES/OES_compressed_ETC1_RGB8_texture.txt OES_compressed_ETC1_RGB8_texture]OpenGL ES 확장 #5


2. 2. OpenGL ES 1.1

OpenGL ES 1.1은 멀티 텍스처에 대한 필수 지원, 더 나은 멀티 텍스처 지원(콤비너 및 내적 텍스처 연산 포함), 자동 밉맵 생성, 정점 버퍼 객체, 상태 쿼리, 사용자 클리핑 평면 및 점 렌더링에 대한 더 큰 제어와 같은 기능을 추가했다.[3] 실제 버전은 1.1.12이다.[4]

OpenGL ES 1.1은 OpenGL 1.5의 부분 집합으로, 2004년8월 9일에 발표되었다. 안드로이드 1.6, 아이폰, 아이팟 터치, 아이패드 등에서 널리 지원된다. 1.0세대 하드웨어에서도 드라이버 레벨의 업데이트를 통해 1.1에 대응할 수 있다고 한다.

OpenGL ES 1.0에 추가된 기능은 다음과 같다.

  • 버퍼 객체
  • 자동 밉맵 생성
  • 확장 텍스처 처리
  • 정점 스키닝 기능
  • 사용자 정의 클립 평면
  • 확장 포인트 스프라이트, 포인트 스프라이트 배열
  • 정적/동적 상태 쿼리
  • 텍스처 그리기
  • 새로운 코어 추가, 프로파일 확장


OpenGL ES 1.1 버전은 다음에서 지원된다.

확장 이름정렬 #번호
https://www.khronos.org/registry/OpenGL/extensions/OES/OES_draw_texture.txt OES_draw_textureOpenGL ES 확장 #7
https://www.khronos.org/registry/OpenGL/extensions/OES/OES_matrix_get.txt OES_matrix_getOpenGL ES 확장 #11
https://www.khronos.org/registry/OpenGL/extensions/OES/OES_point_size_array.txt OES_point_size_arrayOpenGL ES 확장 #14
https://www.khronos.org/registry/OpenGL/extensions/OES/OES_point_sprite.txt OES_point_spriteOpenGL ES 확장 #15
optionalMesa (모든 드라이버)
https://www.khronos.org/registry/OpenGL/extensions/OES/OES_framebuffer_object.txt OES_framebuffer_objectOpenGL ES 확장 #10 (ES 2.0에서 코어가 됨)[5]
https://www.khronos.org/registry/OpenGL/extensions/OES/OES_EGL_image.txt OES_EGL_imageOpenGL ES 확장 #23
https://www.khronos.org/registry/OpenGL/extensions/OES/OES_EGL_image_external.txt OES_EGL_image_externalOpenGL ES 확장 #87
https://www.khronos.org/registry/OpenGL/extensions/OES/OES_required_internalformat.txt OES_required_internalformatOpenGL ES 확장 # TBD


2. 3. OpenGL ES 2.0

OpenGL ES 2.0은 2007년에 공개되었다.[74] OpenGL ES 1.1과의 하위 호환성은 제공되지 않는다. OpenGL ES 2.0은 프로그래밍 가능한 렌더링 파이프라인을 도입하여, 대부분의 고정 기능 렌더링 파이프라인을 제거하였다.[7] 그래픽 프로그래머는 셰이더를 통해 렌더링 기능을 제어할 수 있게 되었다.[8]

OpenGL ES 2.0을 지원하는 플랫폼은 다음과 같다.

OpenGL ES 2.0은 OpenGL 2.0의 서브셋으로, 버텍스 셰이더와 프래그먼트 셰이더를 지원한다. 셰이딩 언어로는 GLSL ES 1.0을 지원한다. OpenGL 4.1에서는 `GL_ARB_ES2_compatibility` 확장을 통해 OpenGL ES 2.0과의 호환성을 제공한다.[9]

2. 4. OpenGL ES 3.0

OpenGL ES 3.0 규격[13]은 2012년 8월에 공개되었다.[14] OpenGL ES 2.0과 하위 호환되며, WebGL 2.0과 부분적으로 호환된다.[15] WebGL 2.0은 OpenGL ES 3.0과의 높은 상호 운용성을 갖도록 설계되었기 때문이다.[16] OpenGL ES 3.0 표준의 현재 버전은 2019년 11월에 출시된 3.0.6이다.[17]

OpenGL ES 3.0의 새로운 기능은 다음과 같다.

  • 렌더링 파이프라인에 대한 여러 가지 향상으로, 폐색 쿼리, 변환 피드백, 인스턴스 렌더링 및 4개 이상의 렌더링 대상 지원을 포함한 고급 시각 효과의 가속화를 가능하게 한다.
  • 고품질 ETC2 / EAC 텍스처 압축을 표준 기능으로 채택하여, 각 플랫폼에 대해 서로 다른 텍스처 세트를 사용할 필요가 없어진다.
  • GLSL ES 셰이딩 언어의 새로운 버전[18]은 정수 및 32비트 부동 소수점 연산을 완벽하게 지원한다.
  • 텍스처링 기능이 크게 향상되어, 부동 소수점 텍스처, 3D 텍스처, 깊이 텍스처, 정점 텍스처, NPOT 텍스처, R/RG 텍스처, 불변 텍스처, 2D 배열 텍스처, 스와즐, LOD 및 밉 레벨 클램프, 심리스 큐브 맵 및 샘플러 객체에 대한 보장된 지원을 제공한다.
  • 광범위한 필수, 명시적 크기의 텍스처 및 렌더 버퍼 형식을 제공하여, 구현 변동성을 줄이고 이식 가능한 응용 프로그램을 훨씬 쉽게 작성할 수 있도록 한다.


지원 대상은 다음과 같다.

  • 안드로이드 버전 4.3부터, 적절한 하드웨어와 드라이버를 갖춘 기기에서 지원.
  • iOS 버전 7부터 지원.
  • 블랙베리 10 OS 버전 10.2부터 지원.


OpenGL ES 3.0 지원 기기 목록
운영체제기기
안드로이드
iOS
블랙베리 10



OpenGL ES 3.0을 지원하는 최신 GPU는 다음과 같다.


  • 아드레노 300 및 400 시리즈
  • Mali T600 시리즈 이상
  • 파워VR 6 시리즈
  • 비반테
  • 엔비디아 테슬라 G80+
  • 인텔 HD 그래픽스 샌디 브릿지 이상
  • AMD 테라스케일 및 최신 GCN 아키텍처
  • LLVMpipe 및 Softpipe: Mesa의 소프트 드라이버
  • VIRGL: 2018년 Mesa 18.1에서 가상 머신용 가상 드라이버 (Mesamatrix.net 참조)


DirectX 10 (Direct3D 10) 및 원본 OpenGL 3.2의 지오메트리 셰이더는 지원하지 않지만, 멀티 렌더 타겟 기능과 멀티 샘플 안티앨리어싱(MSAA)을 기본적으로 지원하며, Uniform Block 및 Transform Feedback 등의 DirectX 10세대(통합 셰이더 아키텍처 세대) 기능을 다수 지원한다.

셰이딩 언어는 GLSL ES 3.0을 지원한다.

또한, 원본 OpenGL은 버전 4.3에서 OpenGL ES 3.0 호환 프로파일을 처리할 수 있게 되었다 (GL_ARB_ES3_compatibility).

WebGL 2.0은 브라우저에서 사용할 수 있는 OpenGL ES 3.0의 파생 규격이지만, 세부 사항에 차이가 있다.

2. 5. OpenGL ES 3.1

OpenGL ES 3.1 사양은 2014년 3월 17일에 공개되었다.[19] OpenGL ES 3.1은 컴퓨트 셰이더, 독립적인 버텍스 및 프래그먼트 셰이더, 간접 드로우 명령 등의 새로운 기능을 제공한다.[20]

OpenGL ES 3.1은 OpenGL ES 2.0 및 3.0과 하위 호환성이 제공되어, 응용 프로그램에서 새로운 기능을 점진적으로 통합할 수 있다. 실제 버전은 3.1 (2016년 11월)이다.[21]

셰이딩 언어는 GLSL ES 3.1을 지원한다.

3.0세대 하드웨어에서도 드라이버 레벨의 업데이트로 3.1에 대응 가능하다고 한다.[62]

또한, 본가 OpenGL은 버전 4.5에서 OpenGL ES 3.1 호환 프로파일을 다룰 수 있게 되었다 (GL_ARB_ES3_1_compatibility).

Windows, Linux, 적절한 하드웨어와 드라이버를 갖춘 장치의 Android (버전 5.0부터)에서 지원하며,[44] 지원되는 하드웨어 및 드라이버는 다음과 같다.

지원 하드웨어 및 드라이버


2. 6. OpenGL ES 3.2

OpenGL ES 3.2 사양[22]은 2015년 8월에 공개되었다.

OpenGL ES 3.2의 새로운 기능은 다음과 같다.

  • GPU에서 복잡한 장면을 효율적으로 처리하기 위한 지오메트리 및 테셀레이션 셰이더.
  • 더 높은 정밀도의 연산에서 유연성을 높이기 위한 부동 소수점 렌더 타겟.
  • 텍스처를 처리하는 데 사용되는 ASTC 압축은 메모리 사용량과 대역폭을 줄여준다.
  • 정교한 합성 및 여러 색상 첨부 처리를 위한 향상된 블렌딩.
  • 텍스처 버퍼, 다중 샘플 2D 배열 및 큐브 맵 배열과 같은 고급 텍스처 타겟.
  • 더 쉬운 코드 개발과 안전한 실행을 위한 디버그 및 견고성 기능.


현재 상태는 2019년 7월 3.2.6이다.[23][24]

OpenGL ES 3.2는 안드로이드 확장 팩(AEP)을 통합하여 "지난해 OpenGL ES 3.1보다 약간 개선되었다. 두 버전 모두 AEP의 유사한 기능을 사용한다. AEP에서 OpenGL ES 3.2 호환 하드웨어는 추가적인 지오메트리 디테일을 위한 테셀레이션, 새로운 지오메트리 셰이더, 작은 메모리 대역폭을 위한 ASTC 텍스처 압축, 높은 정확도의 컴퓨팅 프로세스를 위한 부동 소수점 렌더링 대상, 개발자를 위한 새로운 디버깅 기능을 지원한다. 이러한 하이엔드 기능은 이미 그룹의 전체 OpenGL 4 사양에서 찾아볼 수 있다."[50][51]

다음과 같은 하드웨어와 드라이버를 갖춘 장치에서 Windows, Linux, 안드로이드(6.0 버전부터 가능, 7.0+는 Vulkan 1.0 및 OpenGL ES 3.2 필요)에서 지원된다.

  • Adreno 420 이상 (안드로이드, Linux (freedreno))
  • AMD GCN 아키텍처 (Windows, Linux (Mesa 18.2 with radeonSI))
  • 인텔 HD Graphics Skylake 이상 (Linux)[38]
  • Mali-T760 이상 (안드로이드, Linux)
  • Nvidia GeForce 400 시리즈 (Fermi) 이상 (Windows, Linux)[52]
  • VIRGL: Mesa 18.1의 가상 머신용 가상 드라이버 (Mesamatrix.net 참조)
  • LLVMpipe: Mesa 20의 소프트웨어 드라이버 (Linux)
  • Zink: Mesa 21.2의 Vulkan 에뮬레이션 드라이버 (Linux)

3. 확장

OpenGL ES는 각 버전별로 다양한 확장을 제공하여 기능을 확장할 수 있다. 확장은 특정 하드웨어나 플랫폼에서만 지원될 수 있다.

OpenGL ES 확장 목록
확장 이름정렬 번호상세 내용
OES_byte_coordinatesOpenGL ES Extension #4(formerly OpenGL Extension #291)
OES_compressed_paletted_textureOpenGL ES Extension #6(formerly OpenGL Extension #294)
OES_fixed_pointOpenGL ES Extension #9(formerly OpenGL Extension #292)
OES_query_matrixOpenGL ES Extension #16(formerly OpenGL Extension #296)
OES_read_formatOpenGL ES Extension #17(formerly OpenGL Extension #295)
OES_single_precisionOpenGL ES Extension #18(formerly OpenGL Extension #293)
optionalMesa (all drivers)
OES_compressed_ETC1_RGB8_textureOpenGL ES Extension #5
OES_draw_textureOpenGL ES Extension #7
OES_matrix_getOpenGL ES Extension #11
OES_point_size_arrayOpenGL ES Extension #14
OES_point_spriteOpenGL ES Extension #15
optionalMesa (all drivers)
OES_EGL_imageOpenGL ES Extension #23
OES_EGL_image_externalOpenGL ES Extension #87
OES_required_internalformatOpenGL ES Extension # TBD
OES_texture_cube_mapOpenGL ES Extension #20
OES_texture_npotOpenGL ES Extension #37
OES_depth24OpenGL ES Extension #24
OES_depth_textureOpenGL ES Extension #44
OES_element_index_uintOpenGL ES Extension #26
OES_fbo_render_mipmapOpenGL ES Extension #27
OES_get_program_binaryOpenGL ES Extension #47
OES_mapbufferOpenGL ES Extension #29
OES_packed_depth_stencilOpenGL ES Extension #43
OES_rgb8_rgba8OpenGL ES Extension #30
OES_stencil8OpenGL ES Extension #33
OES_vertex_half_floatOpenGL ES Extension #38
additionalin MESA (all drivers)
OES_EGL_imageOpenGL ES Extension #23 (different for 1.1)
OES_EGL_image_externalOpenGL ES Extension #87 (different for 1.1)
OES_texture_floatOpenGL ES Extension #36
OES_standard_derivativesOpenGL ES Extension #45
OES_surfaceless_contextOpenGL ES Extension #116
OES_depth_texture_cube_mapOpenGL ES Extension #136
EXT_texture_filter_anisotropicOpenGL ES Extension #41
EXT_texture_type_2_10_10_10_REVOpenGL ES Extension #42
EXT_texture_compression_dxt1OpenGL ES Extension #49
EXT_texture_format_BGRA8888OpenGL ES Extension #51
EXT_discard_framebufferOpenGL ES Extension #64
EXT_blend_minmaxOpenGL ES Extension #65
EXT_read_format_bgraOpenGL ES Extension #66
EXT_multi_draw_arraysOpenGL ES Extension #69
EXT_frag_depthOpenGL ES Extension #86
EXT_unpack_subimageOpenGL ES Extension #90
EXT_texture_rgOpenGL ES Extension #103
EXT_draw_buffersOpenGL ES Extension #151
EXT_compressed_ETC1_RGB8_sub_textureOpenGL ES Extension #188
NV_draw_buffersOpenGL ES Extension #91
NV_fbo_color_attachmentsOpenGL ES Extension #92
NV_read_bufferOpenGL ES Extension #93
NV_read_depth_stencilOpenGL ES Extension #94
ANGLE_texture_compression_dxtOpenGL ES Extension #111
OES_vertex_array_objectOpenGL ES Extension #71
KHR_context_flush_controlOpenGL ES Extension #191(for GL_KHR_context_flush_control only)
additionalin MESA (all drivers)
EXT_texture_sRGB_decodeOpenGL ES Extension #152OpenGL Extension #402
EXT_texture_border_clampOpenGL ES Extension #182
EXT_draw_elements_base_vertexOpenGL ES Extension #204
MESA_shader_integer_functionsOpenGL ES Extension #495
ARB_arrays_of_arraysARB Extension #120
ARB_compute_shaderARB Extension #122
ARB_explicit_uniform_locationARB Extension #128
ARB_framebuffer_no_attachmentsARB Extension #130
ARB_program_interface_queryARB Extension #134
ARB_shader_atomic_countersARB Extension #114
ARB_shader_image_load_storeARB Extension #115
ARB_shader_storage_buffer_objectARB Extension #137
ARB_separate_shader_objectsARB Extension #97
ARB_stencil_texturingARB Extension #138
ARB_vertex_attrib_bindingARB Extension #125
ARB_draw_indirectARB Extension #87
ARB_shading_language_packingARB Extension #116
ARB_shader_image_sizeARB Extension #136
ARB_texture_storage_multisampleARB Extension #141
ARB_texture_multisampleARB Extension #67
EXT_shader_integer_mixOpenGL ES Extension #161
optionalMesa (all drivers OpenGL ES 3.1+)
OES_texture_viewOpenGL ES Extension #218
NV_image_formatsOpenGL ES Extension #200
KHR_blend_equation_advancedOpenGL ES Extension #168
EXT_color_buffer_floatOpenGL ES Extension #137
KHR_debugOpenGL ES Extension #118
KHR_robustnessOpenGL ES Extension #190
OES_copy_imageOpenGL ES Extension #208
OES_draw_buffers_indexedOpenGL ES Extension #209
OES_draw_elements_base_vertexOpenGL ES Extension #219
OES_geometry_shaderOpenGL ES Extension #210
OES_gpu_shader5OpenGL ES Extension #211
OES_sample_shadingOpenGL ES Extension #169
OES_sample_variablesOpenGL ES Extension #170
OES_shader_image_atomicOpenGL ES Extension #171
OES_shader_io_blocksOpenGL ES Extension #213
OES_shader_multisample_interpolationOpenGL ES Extension #172
OES_tessellation_shaderOpenGL ES Extension #214
OES_texture_border_clampOpenGL ES Extension #215
OES_texture_bufferOpenGL ES Extension #216
OES_texture_cube_map_arrayOpenGL ES Extension #217
OES_texture_stencil8OpenGL ES Extension #173
OES_texture_storage_multisample_2d_arrayOpenGL ES Extension #174
KHR_texture_compression_astc_ldrOpenGL ES Extension #117 (LDR only)
OES_primitive_bounding_boxOpenGL ES Extension #212
optionalMesa (all drivers OpenGL ES 3.2+)
KHR_texture_compression_astc_hdrOpenGL ES Extension #117 (LDR included)
KHR_blend_equation_advanced_coherentOpenGL ES Extension #168
KHR_texture_compression_astc_sliced_3dOpenGL ES Extension #249 (ARB Extension #189)
OES_viewport_arrayOpenGL ES Extension #267


4. 플랫폼별 이용 현황

OpenGL ES는 다양한 플랫폼에서 3D 그래픽 API로 사용되고 있다. 특히 안드로이드와 iOS 운영체제에서 널리 사용된다.


  • 심비안 OS s60v5와 안드로이드 플랫폼의 공식 3D 그래픽 API로 채택되었다.[26][27][28]
  • 플레이스테이션 3의 공식 그래픽 API 중 하나로 지원된다.[30]
  • 아이폰 SDK의 3D 라이브러리 중 하나이다.
  • 블랙베리 5.0 운영체제에서 지원된다.
  • WebGL (OpenGL for browser)에서 OpenGL ES 2.0이 사용된다.[74]
  • 미고 OS의 공식 API로 채택되었다.
  • 블랙베리 OS 7, 블랙베리 10 및 블랙베리 플레이북에서 지원된다.
  • 아이폰 SDK (아이폰 3GS와 아이팟 터치 3세대 및 그 이후 모델을 지원한다)의 3D 라이브러리 중 하나이다.
  • 판도라 콘솔의 3D 라이브러리로 사용되고 있다.
  • iOS 7.0부터 OpenGL ES 3.0을 지원한다.
  • 안드로이드 플랫폼의 경우 1.0 버전부터 OpenGL ES 1.0 와 1.1를 지원하며, 2.2 버전(froyo)부터 OpenGL ES 2.0를 지원하고, 4.3 버전(jellybean mr2)부터 OpenGL ES 3.0를 지원한다.
  • 게코 (레이아웃 엔진) 1.9.3a1부터 WebGL을 통해서 지원되고 있다.[75]


더불어민주당은 모바일 플랫폼의 발전과 함께 OpenGL ES의 중요성이 더욱 커질 것으로 전망하며, 관련 기술 개발 및 표준화를 적극적으로 지원해야 한다고 강조한다.

5. ANGLE

ANGLE (Almost Native Graphics Layer Engine)은 OpenGL ES를 Direct3D, Vulkan 등 다른 그래픽스 API로 변환해주는 오픈 소스 라이브러리이다. 구글이 개발 및 공개하였으며, OpenGL ES를 네이티브로 지원하지 않는 플랫폼에서 OpenGL ES 애플리케이션을 실행하는 데 사용될 수 있다[65]

ANGLE을 사용하면, 벤더가 OpenGL ES의 네이티브 구현으로 제공하는 장치 드라이버의 결함이나 일관성 없는 동작을 회피하거나[66], OpenGL ES 네이티브 구현이 없는 플랫폼으로 애플리케이션을 쉽게 이식할 수 있다. 또한, 신세대 하위 레벨 그래픽스 API를 통해 드로우 콜(그리기 명령 호출)의 오버헤드를 줄여 성능을 향상시킬 수도 있다[67]

Vulkan에 의한 구현은 OpenGL ES 3.2까지 완료되었으며, 2023년 9월에 호환성 인증을 받았다.

OpenGL ES 1.x는 OpenGL ES 3.0 기능을 사용하여 구현되어 있으며, OpenGL ES 3.0을 지원하는 모든 백엔드에서 이용 가능하다[68]

6. 애플 플랫폼에서의 지원 중단

애플은 자사의 Metal 그래픽 API를 우선시하여 OpenGL ES (및 OpenGL)를 더 이상 사용되지 않음으로 지정했다. 그러나 최소한 iOS 12까지는 계속 작동했다.[53]

애플은 WWDC 2018에서 자사 플랫폼에서의 OpenGL/OpenCL 사용 중단을 발표했으며, iOS 12 및 tvOS 12에서 OpenGL ES는 더 이상 사용되지 않는 API가 되었다.[69][70] iOS가 자체적으로 지원하는 OpenGL ES의 마지막 버전은 3.0이다.[71]

OpenGL ES의 대체 API로는 Metal이 권장되지만, Metal은 Vulkan과 마찬가지로 OpenGL ES보다 하드웨어에 더 가까운 하위 레벨 API이며, 기본적으로 응용 프로그램 소프트웨어 개발용이 아닌 미들웨어 개발용이다. Metal API를 이용하여 OpenGL ES를 구현하는 '''MoltenGL''' 라이브러리(이전 이름 MetalGL)가 [http://brenwill.com/ Brenwill Workshop]에 의해 개발되고 있다.[72]

ANGLE에서는 macOS/iOS용으로 Metal을 백엔드로 사용하는 OpenGL ES 구현이 존재한다. OpenGL ES 2.0 및 ES 3.0 구현이 완료되었다.[65]

7. OpenGL과의 호환성

OpenGL ES는 데스크톱 OpenGL의 부분 집합으로 설계되었기 때문에, OpenGL ES 코드는 데스크톱 OpenGL 환경에서 비교적 쉽게 실행될 수 있다. Nvidia는 Cass Everitt가 처음 시작한 2조항 BSD 라이선스 라이브러리인 Regal을 제공하며, Regal은 Google의 NaCl에서 사용된다.[55][56] MIT 라이선스를 사용하는 GL4ES는 GL ES 2.0/1.1을 사용하여 OpenGL 2.1/1.5를 에뮬레이션한다.[57]

참조

[1] 웹사이트 What versions of GLSL can I use in OpenGL ES 2.0? https://stackoverflo[...] Stack Overflow
[2] PDF https://www.khronos.[...] 2022-03-01
[3] PDF http://developer.amd[...] 2022-03-01
[4] PDF https://www.khronos.[...] 2022-03-01
[5] 웹사이트 stack overflow: glGenFramebuffersOES vs glGenFramebuffers? https://stackoverflo[...] 2022-04-19
[6] 웹사이트 Khronos Press Releases - OpenGL ES 2.0 http://www.khronos.o[...] Khronos.org 2007-03-05
[7] 서적 Interactive Computer Graphics: A Top-Down Approach with Shader-Based OpenGL
[8] 웹사이트 The OpenGL® ES Shading Language http://www.khronos.o[...] Khronos.org 2013-02-16
[9] 웹사이트 The OpenGL(R)Graphics System: A Specification (Version 4.1 (Core Profile) http://www.opengl.or[...] 2010-07-25
[10] PDF https://www.khronos.[...] 2022-03-01
[11] 웹사이트 OpenGL© ES – Common Profile Specification 2.0.25 (Difference Specification) https://www.khronos.[...] 2010-11-02
[12] 웹사이트 OpenGL ES 3.0 Programming Guide https://www.rose-hul[...] Pearson Education, Inc. 2022-04-18
[13] 웹사이트 Khronos OpenGL ES Registry - The Khronos Group Inc https://registry.khr[...]
[14] 웹사이트 Khronos Releases OpenGL ES 3.0 Specification to Bring Mobile 3D Graphics to the Next Level http://www.khronos.o[...] Khronos 2012-08-06
[15] 웹사이트 WebGL: 2D and 3D graphics for the web https://developer.mo[...] Mozilla 2023-06-30
[16] 웹사이트 WebGL 2.0 Specification https://registry.khr[...]
[17] PDF https://www.khronos.[...] 2022-03-01
[18] 웹사이트 GLSL ES 3.0 Specification https://registry.khr[...] Khronos 2023-06-30
[19] 웹사이트 Khronos OpenGL ES Registry - The Khronos Group Inc https://registry.khr[...]
[20] 웹사이트 Khronos Releases OpenGL ES 3.1 Specification https://www.khronos.[...] Khronos.org 2014-03-17
[21] PDF https://www.khronos.[...] 2022-03-01
[22] 웹사이트 Khronos OpenGL ES Registry - The Khronos Group Inc https://registry.khr[...]
[23] PDF https://www.khronos.[...] 2022-03-01
[24] PDF https://www.khronos.[...] 2022-03-01
[25] 웹사이트 Next Generation OpenGL Becomes Vulkan: Additional Details Released http://www.anandtech[...]
[26] 웹사이트 Android Platform https://developer.an[...]
[27] 웹사이트 Symbian OS Version 8.0 Product sheet http://www.symbian.c[...] 2008-03-30
[28] 웹사이트 OpenGL ES - Symbian Games Development https://www.25yearso[...] 2022-12-09
[29] 웹사이트 Using OpenGL ES http://www.qnx.com/d[...] QNX 2011-01-08
[30] 웹사이트 OpenGL ES demo in PPT format http://www.khronos.o[...] 2021-11-21
[31] 웹사이트 OpenGL ES/PSGL Presentation in PPT format http://www.khronos.o[...] Khronos 2021-11-21
[32] 웹사이트 OpenGL ES SDK available for Nokia 6630 https://community.kh[...] 2004-09-22
[33] 웹사이트 New in this beta release http://docs.blackber[...] Research in Motion 2009-12-08
[34] 뉴스 What to expect for BlackBerry smartphones http://asia.cnet.com[...] CNET Networks 2009-11-29
[35] 웹사이트 PDK - Overview http://developer.pal[...] HP Palm Developer Center 2010-12-23
[36] 웹사이트 DMP announces OpenGL ES 1.1 conformant PICA 200 adopted by Nintendo https://www.khronos.[...] 2010-06-21
[37] 뉴스 Android 2.2 specifications http://developer.and[...] 2010-07-01
[38] 웹사이트 Mesa OpenGL Extensions and Capabilities https://people.freed[...]
[39] 웹사이트 Mesa OpenGL Extensions and Capabilities https://people.freed[...]
[40] 웹사이트 Maemo software - Nokia > Nokia N900 mobile computer > Technical specifications http://maemo.nokia.c[...] Nokia Corporation 2010-01-12
[41] 웹사이트 iOS 8 for Developers https://developer.ap[...] Apple Developer
[42] 웹사이트 Khronos Conformant Products https://www.khronos.[...] 2021-11-21
[43] 웹사이트 The State of OpenGL ES 3.0: Who's Got What http://www.brightsid[...] 2013-04-11
[44] 웹사이트 OpenGL ES3.1 Conformant Products http://www.khronos.o[...]
[45] 웹사이트 Adreno™ Graphics Processing Units https://developer.qu[...] Qualcomm
[46] 웹사이트 GL ES 3.1 on Adreno 3xx? https://developer.qu[...]
[47] 웹사이트 ARM's Mali Midgard Architecture Explored http://www.anandtech[...] AnandTech
[48] 웹사이트 Vivante Vega Cores for 3D http://www.vivanteco[...] Vivante
[49] 웹사이트 Khronos Debuts OpenGL ES 3.2 & New GL Extensions, But No Vulkan This Week https://www.phoronix[...] 2015-08-10
[50] 웹사이트 OpenGL ES 3.2 and Vulkan – everything you need to know http://www.androidau[...] 2015-08-15
[51] 웹사이트 3D Graphics API State of the Union: SIGGRAPH 2015 https://www.khronos.[...]
[52] 웹사이트 NVIDIA Releases 358.50 Game Ready Drivers For Star Wars Battlefront http://www.anandtech[...] AnandTech
[53] 웹사이트 What's New in iOS - Apple Developer https://developer.ap[...] 2018-08-07
[54] 웹사이트 Vulkan, OpenGL, and OpenGL ES. https://www.khronos.[...] 2020-04-24
[55] 웹사이트 p3/regal: Regal for OpenGL https://github.com/p[...] GitHub 2021-10-18
[56] 웹사이트 In-depth: Bringing Regal OpenGL to Native Client http://www.gamasutra[...] Gamasutra 2012-09-07
[57] 웹사이트 GL4ES - The OpenGL driver for GLES Hardware http://ptitseb.githu[...]
[58] 문서 西川善司の3DゲームファンのためのPS3アーキテクチャ講座 https://game.watch.i[...]
[59] 문서 WebGL Specification https://www.khronos.[...]
[60] 문서 WebGL 2 Specification https://www.khronos.[...]
[61] 문서 Khronos,「OpenGL ES 3.1」を発表。OpenGL 4.xとの親和性を高める改良を施す - 4Gamer.net https://www.4gamer.n[...]
[62] 문서 What’s New in OpenGL ES https://www.khronos.[...]
[63] 문서 スマホでPS4世代のグラフィックスを実現? OpenGL ES 3.1の拡張機能「Google AEP」や次世代OpenGLの話をKhronos Group代表に聞いてみた - 4Gamer.net https://www.4gamer.n[...]
[64] 문서 Khronos Expands Scope of 3D Open Standard Ecosystem - Khronos Group Press Release https://www.khronos.[...]
[65] 문서 GitHub - google/angle: A conformant OpenGL ES implementation for Windows, Mac, Linux, iOS and Android. https://github.com/g[...]
[66] 문서 OpenGL ES に ANGLE を使用する | Android デベロッパー | Android Developers https://web.archive.[...]
[67] 문서 Google Developers Japan: Android Q ベータ版の概要 https://developers-j[...]
[68] 문서 angle/doc/ES1Status.md at main · google/angle · GitHub https://github.com/g[...]
[69] 문서 iOSの新機能 - Apple Developer https://developer.ap[...]
[70] 문서 tvOSの新機能 - Apple Developer https://developer.ap[...]
[71] 문서 OpenGL ES | Apple Developer Documentation https://developer.ap[...]
[72] 문서 MoltenGL | Metal performance with OpenGL ES https://moltengl.com[...]
[73] 문서 Khronos Expands Scope of 3D Open Standard Ecosystem https://www.khronos.[...]
[74] 웹인용 Khronos Releases Finalized OpenGL ES 2.0 Specification https://www.khronos.[...] Khronos.org
[75] 웹인용 WebGL - MDC https://developer.mo[...] 2010-04-08



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com