본문 바로가기
Computer Science/Computer Graphics

[OpenGL] OpenGL이란?

by Gofo 2021. 3. 10.

OpenGL이란?

Open GL

OpenGL이란 Open Grahpics Library로, Graphics 프로그래밍을 위한 API이다.

(이름과 다르게 Library가 아닌 API이다.)

 

OS는 OpenGL 인터페이스를 제공하고, GPU는 OpenGL implementation인 그래픽 카드 드라이버를 제공한다.

예를 들어, windows에서는 opengl32.dll을 제공하고, GPU는 Nvidia driver 등을 제공한다.

 

참고 : 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
  • 진행중인 코드가 다른 진행중인 코드(프로그램)과 상호작용할 수 있게 한다.

 


Open GL의 특징

장점

  • Cross platform : Windows, OS X, Linux, iOS, Android 등 플랫폼에 구제받지 않고 OpenGL을 사용할 수 있다.
  • 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을 학습하기 위해서는 무겁다.

 


Legacy OpenGL vs Mordern OpenGL

Legacy OpenGL

  • Fixed-function hardware만 사용할 수 있을 때 개발되었다.
  • Shader을 사용할 수 없다.
    • Shader : 소프트웨어 명령의 집합으로 주로 그래픽 하드웨어의 렌더링 효과를 계산하는 데 쓰인다.
  • 배우기에 쉽고 빠른 프로토타입의 개발에 적합하지만 OpenGL 3.0 이후로는 업데이트 되지 않았다.
    • 전망이 어둡다. 점점 없어질 전망이다.

Mordern OpenGL

  • 현재 하드웨어 수준에서 개발이 되었다.
  • Shader을 사용할 수 있다.
  • 더 유연하고 강력하지만 프로그래밍이 Legacy OpenGL에 비해서는 어렵다.

 


참고

본 포스트는 한양대학교 이윤상 교수님의 수업을 정리한 내용입니다.

출처: 한양대학교 이윤상 교수님 컴퓨터그래픽스 강의 강의자료 - https://cgrhyu.github.io/courses/2022-spring-cg.html

 

CGR LAB

Computer Graphics - 2022 Spring Instructor: Yoonsang Lee Teaching Assistant: Chaejun Sohn Undergraduate Mentor: Bokyoung Jang Time / Location: Mon 09:00-11:00 / Online (originally 207 IT.BT Building) - Lab Wed 09:00-11:00 / 508 IT.BT Building - Lecture Cou

cgrhyu.github.io

 

API vs Library:  rapidapi.com/blog/api-vs-library/

 

API vs Library (What's the Difference?) | RapidAPI

In computer programming, terminologies are sometimes confusing to both expert developers and beginners A lot of programmers have had a problem differentiating between an API and a Library

rapidapi.com

 

 

댓글