OpenGL 이란?

Su Bak
3 min readJun 10, 2022

--

Photo by Milad Fakurian on Unsplash

OpenGL은 Open Graphics Library의 줄임말로 이름에서 Library라는 말이 들어가 있듯이 그래픽 하드웨어(GPU)와 통신할 수 있도록 지원해주는 API 또는 표준 규격을 뜻합니다.

예를 들어, Node.js를 사용시 파일에 접근해야 할 때 fs 모듈 API를 쓰는 것과 비슷하게 애플리케이션에서 그래픽적인 표현이 필요할 때는 OpenGL API를 사용하는 것이죠.

OpenGLGPU를 이용한 하드웨어 가속화를 통해 렌더링을 해서 2D, 3D 벡터 그래픽을 표현할 수 있게 하는데요. 그래서 가상현실(VR), CAD, 게임 등에서 많이 사용되고 있습니다.

참고로 WebGL은 OpenGL을 웹에 적용하기 위해 나왔습니다.

위에서 GPU를 이용한 하드웨어 가속화를 통해 렌더링한다고 간단히 설명했는데요. 먼저 하드웨어 가속이란게 무엇인지 설명해보겠습니다.

하드웨어 가속은 어떤 작업을 CPU가 처리하는 것이 아닌 해당 작업에 최적화된 다른 하드웨어(그래픽 카드나 사운드 카드 등)에게 작업을 전송하여 해당 하드웨어가 CPU 보다 더 빠르게 고품질의 작업을 처리하는 것을 뜻합니다.

사실 CPU만으로도 기술적으로는 다른 하드웨어들이 할 수 있는 모든 작업을 수행할 수 있습니다.

하지만 복잡한 계산이 필요한 큰 작업이 오랫동안 CPU를 점유하는 것은 성능적으로도 컴퓨팅 자원적으로도 낭비이기 때문에 작업에 최적화된 다른 하드웨어들에게 작업을 위임하고 CPU는 그동안 다른 작업을 처리할 수 있게되는 것입니다.

참고 : 컴퓨팅 자원 및 계산 속도의 한계를 극복하기 위해 로컬 컴퓨터에서 수행하는 애플리케이션의 일부를 자원과 처리능력이 더 좋은 다른 컴퓨터에 전달하여 처리한 후 결과를 반환받는 방식을 오프로딩(offloading)이라고 합니다.

즉, GPU를 이용한 하드웨어 가속화란 간단히 말하면 그래픽 작업을 CPU가 아닌 GPU에게 작업을 시킴으로 그래픽 작업의 속도와 성능을 향상시키는 것이라고 할 수 있습니다.

그러나 GPU를 이용한 하드웨어 가속화가 항상 좋은 성능을 보장하는 것은 아닙니다.

만약 CPU가 매우 강력하고 GPU가 좋지 않을 경우 CPU가 처리하는 것이 더 좋을 수 있으므로 비효율적일 수 있고, 집중적으로 사용시 그래픽 카드가 과열되거나 손상될 수 있기 때문입니다(그래서 고사양 게임을 할 때 컴퓨터가 불타오르는 것이죠).

물론 요즘은 기술의 발전으로 CPU와 더불어 GPU도 굉장히 높은 성능을 제공하고 있긴 하지만 필요한 곳에 적절하게 사용하는 것이 컴퓨터를 오래 쓸 수 있는 방법 중 하나가 될 수 있으니까요.

컴퓨터 이외에도 스마트폰에서도 OpenGL을 지원하고 있습니다.

Android에서 OpenGL을 사용할 땐 OpenGL ES를 사용하는데요. OpenGL ES에서 ES는 Embedded System의 약자로 핸드폰, PDA 등과 같은 디바이스에 내장해서(Embedded) 사용할 수 있도록 만들어진 API 입니다.

결론

  • OpenGL이란 GPU와 통신할 수 있도록 지원해주는 API 또는 표준 규격이다.
  • 하드웨어 가속이란 특정 작업을 CPU가 아닌 해당 작업에 최적화된 다른 하드웨어(GPU 등)에게 작업을 처리하게 하는 것을 뜻한다.
  • GPU 하드웨어 가속이 항상 성능을 올려주는 것은 아니면 특정 상황(그래픽 장치가 안좋은 경우 등)의 경우 오히려 비효율적일 수 있다.
  • OpenGL을 웹에서 사용할 수 있도록 한 것이 WebGL이며, 디바이스에서 사용할 수 있도록 한 것이 OpenGL ES 이다.

--

--

Su Bak

Backend Developer. Mainly use JavaScript but try not to have language constraints. Always trying to acquire new knowledge