Direct3D

Direct3D는 DirectX에 속하는 실시간 3차원 그래픽스 API로, 프로그램이 GPU의 렌더링 파이프라인과 병렬 컴퓨팅 기능을 사용하도록 한다. Windows 게임과 시각화·그래픽스 소프트웨어에서 화면에 삼각형·텍스처·재질·조명과 픽셀 효과를 표시하는 데 이용된다. DirectX...

분류실시간 3차원 그래픽스·GPU 컴퓨팅 API
개발사Microsoft
소속 기술DirectX
초기 공개Direct3D 2 계열(1996년)
주요 버전Direct3D 9·10·11·12
그래픽스버텍스·픽셀·컴퓨트 셰이더, 래스터화
셰이더HLSL
디스플레이 연결DXGI·Swap Chain
리소스버퍼·텍스처·디스크립터
장치 모델GPU 드라이버·WDDM
대상Windows 게임·시뮬레이션·그래픽스 프로그램
API 문서Microsoft Learn: Direct3D
D3D12 가이드Direct3D 12

Direct3D는 DirectX에 속하는 실시간 3차원 그래픽스 API로, 프로그램이 GPU의 렌더링 파이프라인과 병렬 컴퓨팅 기능을 사용하도록 한다. Windows 게임과 시각화·그래픽스 소프트웨어에서 화면에 삼각형·텍스처·재질·조명과 픽셀 효과를 표시하는 데 이용된다. DirectX 전체와 동일한 기술은 아니며 DirectInput이나 오디오와 다른 전문 그래픽스 인터페이스다.[1]

Direct3D의 버전은 그래픽스 하드웨어 발전과 함께 크게 달라졌다. Direct3D 9에서는 고정 기능과 프로그래머블 셰이더의 혼합 구성이 널리 사용됐고, Direct3D 10·11에서는 통합 셰이더 모델·새 자원·상태 및 컴퓨트 기능이 발전했다. Direct3D 12는 드라이버가 암묵적으로 수행하던 작업 중 더 많은 부분을 응용 프로그램에 제공하는 저수준 명령 큐·리스트 및 자원 관리 모델로 전환했다.

애플리케이션은 Device와 Command Queue·Command List, Pipeline State·Descriptor 등의 개념으로 작업을 구성한다. GPU 메모리와 버퍼·텍스처의 자원 상태, 동기화·Fence 관리가 매우 중요하다. 렌더링된 프레임을 창에 표시할 때에는 DXGI의 Swap Chain과 Windows 디스플레이 시스템을 사용한다. 모든 버전이 동일한 API 객체 구조를 사용하는 것은 아니다.[2]

GPU는 지원하는 Feature Level과 셰이더 모델, 레이 트레이싱·메시 셰이더 등 기능이 다르다. 응용 프로그램은 장치가 어떤 기능을 지원하는지 검사하고 그래픽스 품질·파이프라인을 조정해야 한다. WDDM 드라이버의 버전과 Windows 릴리스에 따라 어떤 기능을 사용할 수 있는지도 달라진다.

Direct3D의 프로그래밍은 일반적인 고수준 게임 엔진 제작과 다르게 리소스·GPU 명령·동기화 등 세부 구현을 다루는 작업이다. 게임 엔진이 Direct3D를 백엔드로 사용할 수는 있지만 Direct3D 자체가 레벨 편집기·물리·오디오·게임 규칙을 모두 제공하는 게임 엔진은 아니다.

역사

개발 배경과 설계

주요 구성 요소와 버전

실행·렌더링 및 자료 구조

하드웨어와 장치 드라이버

개발 도구·프로그래밍

성능·호환성 및 제약

관련 소프트웨어

영향

관련 문서

  1. Microsoft Learn: Direct3D ↩
  2. Microsoft Learn: Direct3D 12 개요 ↩