다이렉트드로
1. 개요
다이렉트드로는 COM 기반의 API로, 주로 C++에서 사용하도록 설계되었으며, DirectX 7에서는 Visual Basic도 공식적으로 지원했다. .NET Framework용 Managed DirectX에서도 지원된다. DirectDraw는 구형 게임과의 윈도우 호환성 저하 문제를 야기하며, 32비트 색 깊이에서 실행 거부 또는 오류를 발생시키기도 한다. 이러한 문제를 해결하기 위해 WineD3D, cnc-ddraw, ts-ddraw, DDrawCompat, ddwrapper 등의 대체 기술이 사용된다.
| 종류 | 그래픽 API |
|---|---|
| 개발 | 마이크로소프트 |
| 운영체제 | 마이크로소프트 윈도우 |
| 최신 버전 | (DirectX의 일부) |
| 용도 | 2D 그래픽 가속 게임 개발 |
| 설명 | 다이렉트X API의 이전 구성 요소 |
|---|---|
| 대체 기술 | Direct2D |
| 특징 | 하드웨어 가속 2D 그래픽 렌더링 제공 |
| 인터페이스 | COM |
| 프로그래밍 언어 | C++ |
| API 스타일 | 절차적 |
| 상태 | 더 이상 사용되지 않음 |
| 관련 기술 | Direct3D DirectSound DirectInput |
| 최초 출시 | 1995년 (DirectX 1.0) |
|---|---|
| 최종 업데이트 | DirectX 8.1 이후 (기능이 Direct3D로 통합됨) |
| 대체 시기 | DirectX 9 이후 |
| 표면 | 기본 표면 오프스크린 표면 비디오 메모리 표면 |
|---|---|
| 블리팅 | 비트 블록 전송 작업 지원 |
| 색상 키 | 투명도 구현을 위한 색상 키 지원 |
| 하드웨어 가속 | 그래픽 카드 기능을 활용한 가속 |
-
DirectX -
Direct2D
Direct2D는 마이크로소프트에서 개발한 2D 그래픽 API로, 낮은 수준의 추상화, 고품질 텍스트 렌더링, 안티앨리어싱, 하드웨어 가속, 높은 DPI 지원 등의 특징을 가지며 다양한 분야에서 활용된다. -
DirectX -
다이렉트쇼
DirectShow는 마이크로소프트에서 개발한 윈도우 기반 멀티미디어 프레임워크이자 API로, 필터 그래프를 통해 비디오 재생, 오디오 녹음, 편집, 인코딩 등 다양한 작업을 처리하며, 뛰어난 코덱 확장성을 가지지만 복잡한 구조와 코덱 충돌 문제가 있다. -
그래픽 라이브러리 -
Direct2D
Direct2D는 마이크로소프트에서 개발한 2D 그래픽 API로, 낮은 수준의 추상화, 고품질 텍스트 렌더링, 안티앨리어싱, 하드웨어 가속, 높은 DPI 지원 등의 특징을 가지며 다양한 분야에서 활용된다. -
그래픽 라이브러리 -
WinG
WinG는 윈도우 3.x의 그래픽 성능 향상을 위해 개발된 기술로, DirectX로 발전하는 기반이 되었으며 한국 게임 산업에도 영향을 미쳤다.
2. 지원 언어
DirectDraw는 COM 기반 API이며, 주로 C++(C++)에서 사용하도록 설계되었다. DirectX 7부터는 Visual Basic도 공식 지원하였다.
3. 호환성 문제 및 해결 방안
DirectDraw에 의존하는 구형 게임들은 새로운 Windows 버전과의 호환성 문제가 발생할 수 있다. 예를 들어, 커맨드 앤 컨커, 워크래프트 2, 테마 병원과 같은 게임들은 32비트 색 깊이에서 실행되지 않거나, 화면 표시 오류가 발생할 수 있다. 이러한 문제를 해결하기 위해 DirectDraw를 다시 구현하는 방법이 관찰되기도 한다.
3.1. 대체 기술
DirectDraw에 의존하는 오래된 게임들은 윈도우와의 호환성 문제가 발생했다. 예를 들어, 커맨드 앤 컨커, 워크래프트 2, 테마 병원과 같은 게임들이 영향을 받았다. 새로운 윈도우 버전에서는 일부 게임이 32비트 색 깊이에서 실행되지 않거나, 화면 전환 시 검은 화면이나 오류가 나타나는 문제가 발생했다. 이러한 문제를 해결하기 위해 DirectDraw를 다시 구현하는 방법이 사용되기도 했다.
DirectDraw의 기능을 대체하기 위해 일반적으로 사용되는 기술들은 다음과 같다:
* 와인의 WineD3D
* CnCNet의 cnc-ddraw 및 ts-ddraw
* DDrawCompat
* ddwrapper
각각의 기술들은 DirectDraw를 OpenGL, GDI, Direct3D 9 등으로 변환하거나, 문제가 있는 호출을 수정하는 방식으로 DirectDraw의 기능을 대체한다.
3.1.1. WineD3D
와인의 WineD3D는 DirectDraw 호출을 OpenGL로 변환하여 호환성을 제공한다.
3.1.2. CnCNet
CnCNet의 cnc-ddraw 및 ts-ddraw는 커맨드 앤 컨커 멀티플레이어 네트워크이며, GDI, OpenGL (GLSL 지원 포함) 또는 Direct3D 9로 변환된다.