GDI

GDI란 그래픽 디바이스 인터페이스(Graphic Device Interface)의 약자로서 윈도우 1.0부터 윈도우 XP 때까지 사용하였던 기본 2D 그래픽 라이브러리이다.

기본적으로 C언어 함수와 각 오브젝트를 관리하는 구조체의 핸들로 이루어져 있다. 따라서 다양한 언어에서 함수를 바인딩하여 사용할 수 있다.

역사[편집 | 원본 편집]

윈도우 이전의 운영 체제도스의 경우 그리는 것에 대한 지원이 없었기 때문에 각 그래픽 카드에 맞는 코드를 프로그래머가 직접 작성해 주어야 했다. 따라서 이는 응용프로그램/게임을 제작하는 제작자에게는 아주 무거운 짐이 되었다. 각 그래픽 카드에 맞는 모든 코드를 제작자가 작성하고, 그것을 프로그램에 넣어야 했기 때문이다.

GDI는 프로그래머가 그래픽카드에 직접 접근하지 않아도 2D 그리기를 할 수 있도록 만들어졌다.

이후 윈도우 비스타부터는 Direct2D에 이러한 역할이 옮겨졌고, GDI는 하위호환을 지원하기 위하여 남아있게 되었다. 여전히 윈도우 10에서 GDI를 이용한 2D그리기가 가능하다.

장점[편집 | 원본 편집]

  • 하드웨어를 추상화함
프로그래머가 하드웨어에 대해 자세히 알지 못해도 2D그리기를 할 수 있도록 작성되어 있다. 이는 프로그램의 독립성을 높이는 장점이 되었다.

단점[편집 | 원본 편집]

  • 2D 그리기를 CPU에서 처리함
그래픽카드에 구애받지 않기 위해서 GDI는 그리는 동작을 전부 CPU에서 처리를 한다. 따라서 그리는 속도가 느렸으며, 그래픽카드의 계산속도가 빨라진 현재에 와서는 GDI의 이러한 동작은 단점이 되었다.
  • 기능부족
윈도우1.0부터 시작되었기 때문에 기능을 많이 추가하기가 어려웠으며, 이는 많은 기능을 추가하기 보다는 가능한 하드웨어에 독립적으로 속도를 최대한 빠르게 하기 위해서 제작되었다. 따라서 화려한 효과를 보여주는데에는 많은 제약이 있다.

하드웨어 추상화[편집 | 원본 편집]

윈도우 XP때까지는 다음과 같이 모니터에 출력이 되었다.

응용프로그램
GDI 2D그리기(CPU에서 계산) DirectX 2D,3D그리기(GPU에서 계산)
레스터라이즈
GDI를 이용한 프로그램 창영역에 출력
그래픽 드라이버
모니터

각주