※ 이 글은 오가사와라 히로유키(小笠原博之) 씨가 블로그에 적은 글을 번역한 것입니다. 사정에 따라 예고없이 삭제될 수 있으므로 양해부탁드립니다.

Desktop GPU와 OpenGL ES 3.1 API

(원문 : Desktop GPU と OpenGL ES 3.1 API)

OpenGL ES는 Mobile등에서 사용되는 API지만, Desktop 대상 OpenGL에도 적극적으로 이식되어 호환성을 가지게 되었습니다. OpenGL 4.5에서는 GL_ARB_ES3_1_compatibility를 지원하여, OpenGL ES 3.1 API로도 쓸 수 있습니다.

2015/06/25 현재 Windows에서의 대응상황 (beta driver 포함)

Windows           Desktop API   Mobile API
-------------------------------------------------------------
GeForce           OpenGL 4.5    OpenGL ES 3.1 AEP
RADEON            OpenGL 4.5    OpenGL ES 3.1
Intel 4000 (Gen7) OpenGL 4.0    OpenGL ES 3.1    IvyBridge세대
Intel 4600 (7.5)  OpenGL 4.3    OpenGL ES 3.1    Haswell세대

Intel과 GeForce는 OpenGL ES 3.1 Context를 다시 만들 필요가 있습니다. RADEON의 경우는 OpenGL 4.5 Context 그대로 사용합니다. Desktop GPU에서 OpenGL ES를 사용하는 방법에 대해서는 아래 페이지에 정리해두었습니다.

Intel HD Graphics (D3D11 세대)는 OpenGL 4.5에 대응하지 않지만, 새 드라이버에서 OpenGL ES 3.1에 대응합니다. 구체적으로는 Ivy Bridge 세대의 Intel HD Graphics 4000/2500 이후로, BayTrail의 HD Graphics도 포함됩니다.

Intel HD Graphics 4000 (Ivy Bridge) Windows 8.1 x64

GL_VERSION: OpenGL ES 3.1 - Build 10.18.10.4226
GL_RENDERER: Intel(R) HD Graphics 4000
GL_VENDOR: Intel
GL_SHADING_LANGUAGE_VERSION: OpenGL ES GLSL ES 3.1 - Build 10.18.10.4226
Intel HD Graphics (BayTrail-T Atom Z3740) Windows 10 x86

GL_VERSION: OpenGL ES 3.1 - Build 10.18.10.3993
GL_RENDERER: Intel(R) HD Graphics
GL_VENDOR: Intel
GL_SHADING_LANGUAGE_VERSION: OpenGL ES GLSL ES 3.1 - Build 10.18.10.3993
Intel HD Graphics 4600 (Haswell) Windows 10 x64

GL_VERSION: OpenGL ES 3.1 - Build 10.18.15.4235
GL_RENDERER: Intel(R) HD Graphics 4600
GL_VENDOR: Intel
GL_SHADING_LANGUAGE_VERSION: OpenGL ES GLSL ES 3.10 - Build 10.18.15.4235

GeForce처럼 GL_ANDROID_extension_pack_es31a (AEP)는 없습니다만, Tessellator/GeometryShader 등 일부 기능은 독자적으로 대응이 이루어져있습니다. OpenGL ES 3.1 context에서는 다음 extension이 포함되어 있다는 것을 알 수 있습니다.

GL_INTEL_tessellation
GL_INTEL_geometry_shader

GeForce는 OpenGL ES 3.1 context로 AEP를 지원합니다. 다만 GPU에 따라서는 AEP에서 필요한 일부기능(ASTC Texture)을 소프트웨어로 에뮬레이션하는 것 같습니다. NVIDIA는 Mobile 용으로 GLES Emulator Library를 릴리즈하지 않으므로 그것을 겸하고 있는 것일지도 모릅니다.

RADEON는 OpenGL 4.x 그대로이므로 딱히 기능제한은 없습니다. 따라서 언제든지 GLES API로 OpenGL 4.x에 해당하는 기능을 쓸 수 있습니다.

GPU 별 상세는 아래 페이지에 실어두었습니다. 가능한 범위에서 각 OpenGL ES 3.1 context의 결과도 포함되어있습니다.

관련 글

+ Recent posts