
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를 이용한 프로그램 창영역에 출력 | ||
↓ | ||
그래픽 드라이버 | ||
↓ | ||
모니터 |