OpenGL 이란?

Woogie_·2024년 6월 24일

OpenGL

목록 보기
1/3

OpenGL

  • OpenGL은 Open Graphics Library의 줄임말로 Graphics 프로그래밍을 위한 (그래픽 하드웨어 (GPU)와 통신할 수 있도록 지원해주는) API 또는 표준 규격
  • OS는 OpenGL 인터페이스를 제공하고 GPU는 OpenGL implementation인 그래픽 카드 드라이버를 제공
  • OpenGL은 GPU를 이용한 하드웨어 가속화를 통해 렌더링을 해서 2D, 3D 벡터 그래픽을 표현

하드웨어 가속

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

참고) Library vs API

Library

  • Collection of functions, pre-compiled routines or reusable components of code
    => 코드 그 자체를 모아 놓은 것
  • 코드의 반복을 줄이고 재사용을 할 수 있게 한다
  • 프로그래밍 속도를 단축할 수 있다

API (Application Programming Interface)

  • Collection of software protocols
    => 인터페이스를 모아 놓은 것

  • 라이브러리로 만들어져있을 수도 있다

  • a set of tools and protocols prescribed by a computer operating system or another app by which a developer writing a program can make request

  • 진행중인 코드가 다른 진행중인 코드(프로그램)과 상호작용할 수 있게 한다

    OpenGL의 특징

    장점

  • Cross Platform : Windows, OS X, Linux, iOS, Android 등 플랫폼에 구제받지 않고 사용 가능

  • Language independent : C, Python, Java, Javascript 등 많은 언어에서 사용 가능

    단점

  • Only drawing things

    • low-level drawing operation에서 강력한 기능을 보인다.
    • creating windows, OpenGL contexts, handling events 등을 처리할 수 없다.
  • 다른 기능을 수행하기 위해 다른 utility library가 필요하다.

    • GLFW, FreeGLUT : OpenGL을 위한 utility library
    • Fltk, wxWidgets, Qt, Gtk
      • 범용적인 GUI framework
      • 강력하지만 OpenGL을 학습하기 위해서는 무겁다.

OpenGL 활용

  • Real-time 2D/3D rendering
    • 2D/3D game engine
    • VR/AR engine
    • Photo-realistic rendering
    • GUI component rendering
    • General-purpose computing
      • image processing, neural network
    • Window management (OS part)
    • Input (keyboard / mouse) management (OS part)
    • GUI framework (only drawing)
profile
상상을 구현하는 개발자

0개의 댓글