게임이 화면에 그림을 그릴 때, 프로그램은 그래픽카드에게 직접 명령하지 않고 그래픽 API라는 중간 약속을 거칩니다. DirectX와 OpenGL은 그 대표적인 그래픽 API입니다. 이 글은 두 API가 무엇이고 어떻게 다른지, 엔진을 쓰는 시대에 왜 여전히 배울 가치가 있는지 설명합니다.
그래픽 API는 무엇을 하는가
그래픽카드는 제조사와 모델마다 내부 구조가 다릅니다. 게임이 그래픽카드마다 따로 코드를 짤 수는 없으니, 공통으로 쓸 수 있는 명령 체계가 필요합니다. 그래픽 API는 '이 정점 데이터를 올려라, 이 셰이더로 그려라, 이 텍스처를 써라' 같은 명령을 정해 두고, 그래픽카드 드라이버가 이를 실제 하드웨어 명령으로 바꿔 줍니다.
유니티와 언리얼 같은 엔진도 결국 내부에서 이런 그래픽 API를 호출해 화면을 그립니다. 엔진 설정에서 그래픽 API를 고르는 메뉴가 있는 이유가 여기에 있습니다.
DirectX의 특징
DirectX는 마이크로소프트가 만든 API 묶음으로, 윈도우와 엑스박스에서 쓰입니다. 그래픽을 담당하는 부분이 Direct3D이고, 예전에는 입력과 사운드 API도 함께 포함되어 있었습니다. 윈도우 PC 게임에서 오랫동안 널리 쓰였고, 관련 도구와 문서가 풍부합니다.
셰이더 언어로는 HLSL을 씁니다. 버전에 따라 구조가 크게 다른데, Direct3D 11은 비교적 다루기 쉬운 편이고 Direct3D 12는 메모리와 명령 처리를 개발자가 더 많이 직접 관리하는 저수준 API입니다.
OpenGL의 특징
OpenGL은 크로노스 그룹이 관리하는 개방형 표준으로, 윈도우, 리눅스, macOS 등 여러 운영체제에서 쓸 수 있도록 만들어졌습니다. 모바일과 웹에서는 이를 바탕으로 한 OpenGL ES와 WebGL이 쓰였습니다. 셰이더 언어는 GLSL입니다.
OpenGL은 내부 상태를 바꿔 가며 그리는 '상태 기계' 방식이라 처음 배우기 쉬운 편이고, 입문용 자료가 많아 그래픽스 공부의 출발점으로 자주 추천됩니다. 다만 애플 플랫폼에서는 더 이상 권장되지 않아 신규 개발에서는 다른 API가 선택되는 경우가 많습니다.
한눈에 비교
| 항목 | DirectX(Direct3D) | OpenGL |
|---|---|---|
| 만든 곳 | 마이크로소프트 | 크로노스 그룹(개방형 표준) |
| 주요 플랫폼 | 윈도우, 엑스박스 | 여러 운영체제, 모바일·웹 변형판 |
| 셰이더 언어 | HLSL | GLSL |
| 입문 난이도 | 11은 보통, 12는 높음 | 비교적 낮음 |
| 후속 저수준 API | Direct3D 12 | Vulkan |
Vulkan, Metal 그리고 저수준 API 흐름
최근 그래픽 API는 드라이버가 대신 해 주던 일을 개발자에게 더 많이 맡기는 방향으로 바뀌었습니다. Direct3D 12, Vulkan, 애플의 Metal이 그 예입니다. 개발자가 메모리 배치와 명령 제출을 직접 관리하는 대신, CPU 부담을 줄이고 멀티코어를 잘 활용할 수 있습니다.
- Vulkan: 크로노스 그룹의 저수준 API, 여러 운영체제와 안드로이드에서 사용
- Metal: 애플 플랫폼의 그래픽 API
- 공통점: 코드량이 많고 어렵지만 성능 제어 폭이 넓음
엔진을 쓰는 개발자는 이 차이를 직접 다룰 일이 적지만, 엔진 그래픽스 프로그래머나 렌더링 담당자는 이런 API를 깊이 다룹니다.
엔진 시대에도 배울 가치가 있을까
대부분의 게임 프로그래머는 엔진 위에서 일하므로 그래픽 API를 직접 쓸 일이 많지 않습니다. 그래도 삼각형 하나를 직접 그려 보는 경험은 큰 의미가 있습니다. 정점 버퍼, 셰이더, 변환 행렬, 깊이 버퍼가 실제로 어떻게 이어지는지 알게 되면 엔진의 렌더링 설정, 드로우콜 최적화, 셰이더 작성이 훨씬 잘 이해됩니다.
- C++ 기초와 벡터·행렬을 먼저 익힙니다.
- OpenGL이나 Direct3D 11로 창을 띄우고 삼각형 하나를 그립니다.
- 텍스처를 입히고, 카메라를 움직이고, 간단한 조명을 넣어 봅니다.
- 익숙해지면 저수준 API나 엔진 렌더링 구조로 넓혀 갑니다.
SBS아카데미게임학원 게임프로그래밍 과정은 C·C++과 WinAPI 기초를 다룬 뒤 엔진 실습으로 이어져, 그래픽 API 공부에 필요한 바탕을 갖출 수 있습니다.
자주 묻는 질문
DirectX와 OpenGL 중 무엇부터 배우는 게 좋나요?
입문 자료가 많은 OpenGL이나 비교적 다루기 쉬운 Direct3D 11로 시작하는 경우가 많습니다. 중요한 것은 API보다 렌더링 파이프라인 개념입니다.
유니티나 언리얼만 써도 취업할 수 있나요?
대부분의 클라이언트 직군은 엔진 능력이 중심입니다. 그래픽스·엔진 프로그래머를 목표로 한다면 그래픽 API 경험이 큰 강점이 됩니다.
