3D Rendering
DC
Keisa
2024. 12. 31. 14:13
WinAPI의 DC(Device Context)는 그래픽 출력 및 장치와의 상호작용을 위한 중요한 개념입니다. DC는 Windows의 GDI(Graphics Device Interface)에서 화면, 프린터, 메모리 비트맵 등 그래픽 출력 장치와 통신하는 데 사용되는 구조체입니다. DC는 그래픽 객체 및 그들의 속성, 그리고 출력 설정을 포함합니다.
화면 출력에 필요한 모든 정보를 가지는 데이터 구조, GDI 모듈에 의해서 관리된다.
DC의 주요 특징
- 그래픽 출력 대상 관리
DC는 출력 장치(화면, 프린터, 메모리)를 지정하고, 해당 장치로 그래픽을 그릴 때 사용하는 매개체입니다. - 속성 및 상태 저장
DC는 색상, 브러시, 펜, 폰트, 배경 색상 등과 같은 그래픽 속성을 저장합니다. 이러한 속성을 설정하고, GDI 함수를 통해 그래픽 작업을 수행할 수 있습니다. - DC 종류
- 화면 DC(Screen DC): 화면에 그래픽을 출력하는 데 사용됩니다.
- 메모리 DC(Memory DC): 메모리 내에서 그래픽 작업을 수행하기 위한 DC로, 더블 버퍼링 또는 비트맵 조작에 사용됩니다.
- 프린터 DC(Printer DC): 프린터 장치와 상호작용하기 위해 사용됩니다.
메모리 DC 활용 예
메모리 DC는 깜빡임을 방지하거나 오프스크린 렌더링을 위해 사용됩니다.
HDC hdc = GetDC(hwnd);
HDC memDC = CreateCompatibleDC(hdc);
HBITMAP hBitmap = CreateCompatibleBitmap(hdc, width, height);
SelectObject(memDC, hBitmap);
// 메모리 DC에서 그리기 작업 수행
Rectangle(memDC, 10, 10, 100, 100);
// 메모리 DC의 내용을 화면 DC로 복사
BitBlt(hdc, 0, 0, width, height, memDC, 0, 0, SRCCOPY);
// 자원 해제
DeleteObject(hBitmap);
DeleteDC(memDC);
ReleaseDC(hwnd, hdc);
WinAPI의 DC는 그래픽 작업에서 기본적인 역할을 합니다. DC의 종류와 사용법을 이해하면 효율적인 그래픽 처리가 가능합니다. 추가적으로, GDI+와 Direct2D 같은 고급 기술도 DC 기반으로 작동하는 경우가 많습니다.