Notice
Recent Posts
Recent Comments
Link
«   2026/02   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
Tags
more
Archives
Today
Total
관리 메뉴

MOONSUN

[D3D] Direct3D 11 렌더링 파이프라인 주요 객체 본문

D3D

[D3D] Direct3D 11 렌더링 파이프라인 주요 객체

MoonSun_v 2025. 9. 29. 12:54

 

Direct3D를 활용한 그래픽스 프로그래밍에서는 Device, DeviceContext, SwapChain, RenderTargetView와 같은 다양한 인터페이스가 사용된다.

이런 인터페이스들은 단순히 개별적으로 존재하는 것이 아니라, 렌더링 파이프라인(Rendering Pipeline)이라는 체계적인 처리 과정 속에서 각 단계별로 특정 역할을 수행한다.

 

이 글에서는 Direct3D 11을 기준으로, 주요 인터페이스 객체의 기능을 정리해보고자 한다. 

 

 

1. DXGI 관련 객체

Direct3D는 DXGI (DirectX Graphics Infrastructure)를 통해 GPU 및 디스플레이와 연결된다.

인터페이스 설명
IDXGIFactory4 DXGI 팩토리 객체.
GPU 어댑터(그래픽 카드)와 출력 장치(모니터)를 열거하거나, 스왑체인을 생성하는 데 사용.
“Direct3D 환경을 만드는 출발점”
IDXGIAdapter3 GPU 어댑터 객체.
GPU의 세부 정보(VRAM, 이름, 성능 등)에 접근 가능

 

 

 

 

2. D3D11 장치 및 파이프라인 객체

 

2-1. 장치(Device) 관련 객체

인터페이스 설명 
ID3D11Device GPU와 연결되는 논리 장치. 버퍼, 텍스처, 셰이더, 상태 객체 등 모든 그래픽 리소스를 생성
ID3D11DeviceContext 생성된 리소스를 파이프라인에 바인딩하고 드로우콜 제출. Device가 만든 리소스를 실제로 사용

 

2-2. 출력(Output) 관련 객체

인터페이스  설명 
IDXGISwapChain1 Back Buffer ↔ Front Buffer 관리, Present() 호출로 렌더링 결과 화면 출력
ID3D11RenderTargetView 최종 색상 출력 대상 (Back Buffer)
ID3D11DepthStencilView 깊이/스텐실 테스트를 위한 버퍼 뷰. Depth Test와 Stencil Test 수행

 

2-3. 상태(State) 관련 객체

인터페이스  설명 
ID3D11RasterizerState 컬링, 클리핑, 뷰포트/시저 설정 등 래스터화 제어
ID3D11BlendState 픽셀 출력 색상 블렌딩 방식 정의 (투명도, 알파, 합성)
ID3D11DepthStencilState 깊이 및 스텐실 테스트 방식 정의
ID3D11SamplerState 텍스처 샘플링 방식 정의 (필터링, Address 모드, Mip Level)

 

2-4. 파이프라인 단계별 객체

단계 인터페이스 설명 
입력 조립기 (IA) ID3D11InputLayout 정점 데이터 형식 정의
  ID3D11Buffer (Vertex Buffer) 정점 데이터 저장
  ID3D11Buffer (Index Buffer) 인덱스 데이터 저장
정점 셰이더 (VS) ID3D11VertexShader 정점 좌표 변환, 스키닝, 기본 연산 수행
  ID3D11Buffer (Constant Buffer) 상수 데이터 전달 (행렬, 라이트, 머티리얼 등)
픽셀 셰이더 (PS) ID3D11PixelShader 픽셀 색상 계산, 텍스처링, 라이팅
  ID3D11ShaderResourceView 셰이더에서 접근 가능한 텍스처
지오메트리 셰이더 (GS) ID3D11GeometryShader 프리미티브 확장, 점→삼각형 변환 등
테셀레이션 셰이더 ID3D11HullShader / ID3D11DomainShader 테셀레이션 패치 분할 및 좌표 계산
컴퓨트 셰이더 ID3D11ComputeShader GPU 일반 연산 처리, GPGPU 활용

 

 

2-5. 리소스(Resource) 관련 객체

인터페이스  설명 
ID3D11Texture2D 2D 텍스처 저장. 렌더 타겟, 깊이/스텐실 버퍼, 셰이더 텍스처 등으로 사용 가능
ID3D11UnorderedAccessView 셰이더에서 임의 접근 가능, Compute Shader 등에서 사용

 

 

 

 

6. 정리

이번 글에서는 Direct3D 11에서 렌더링 파이프라인을 구성하는 주요 객체와 그 역할을 단계별·카테고리별로 정리해보았다.

 

1. DXGI 관련 객체

  • Direct3D 환경과 GPU/디스플레이를 연결하는 출발점.
  • IDXGIFactory4로 어댑터와 스왑체인을 생성하고, IDXGIAdapter3로 GPU 정보를 조회한다.

 

2. 장치 및 파이프라인 객체

  • 장치(Device):
    • ID3D11Device와 ID3D11DeviceContext는 GPU 리소스를 생성하고 실행하는 핵심 역할을 수행
  • 출력(Output):
    • IDXGISwapChain1, ID3D11RenderTargetView, ID3D11DepthStencilView는 화면에 그려지는 결과와 깊이/스텐실 테스트를 담당
  • 상태(State):
    • RasterizerState, BlendState, DepthStencilState, SamplerState는 렌더링 동작과 텍스처 샘플링 방식을 제어한다.
  • 파이프라인 단계별 객체:
    • 입력 조립기, 정점 셰이더, 픽셀 셰이더, 지오메트리 셰이더, 테셀레이션 셰이더, 컴퓨트 셰이더 등 각 단계에서 필요한 객체들이 실제 렌더링 연산을 수행
  • 리소스(Resource):
    • Texture2D, UnorderedAccessView 등은 셰이더에서 읽고 쓰는 데이터로 사용된다.

 

 

이번 글에서는 단순히 어떤 객체들이 있고, 어떤 역할이 있는지 간단하게 정리만 해보았고, 

다음 글 부터는 직접 D3D 실습을 해보면서 위 객체들이 어떻게 사용하는지 살펴보도록 하겠다.