일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- 다이나믹 프로그래밍
- 알고리즘
- 멀티프로세서
- 락
- codility
- OS
- 스케줄링
- 병행성 관련 오류
- 병행성
- 파일시스템 구현
- 다이나믹프로그래밍
- 그리디 알고리즘
- 운영체제
- 멀티쓰레드
- DirectX 12
- 렌더링 파이프라인
- 백준
- 타입 객체
- 자료구조
- directx
- 디자인패턴
- DirectX12
- 컨디션 변수
- 쓰레드
- 영속성
- Direct12
- 그리디알고리즘
- 동적계획법
- I/O장치
- 프로그래머스
- Today
- Total
목록DirectX 12 (4)
기록공간
인덱스와 인덱스 버퍼 정점들과 마찬가지로, GPU가 인덱스의 배열에 접근할 수 있으려면 인덱스들을 버퍼 GPU자원(ID3D12Resource)에 넣어 두어야 한다. 인덱스들을 담는 버퍼를 인덱스 버퍼라고 부른다. d3dUtil:: CreateDefaultBuffer 함수(이전 장에서 설명했었음)는 void*를 통해 자료를 처리하므로, 인덱스 버퍼뿐만 아니라 모든 기본 버퍼를 생성할 수 있다. 인덱스 버퍼를 파이프라인에 묶으려면 인덱스 버퍼 자원을 서술하는 인덱스 버퍼 뷰를 만들어야 한다. 정점 버퍼 뷰처럼 인덱스 버퍼 뷰에도 서술자 힙이 필요하지 않다. 인덱스 버퍼 뷰를 대표하는 형식은 구조체 D3D12_INDEX_BUFFER_VIEW이다. typedef struct D3D12_INDEX_BUFFER_V..

이번 장에서는 그리는 과정에 필요한 Direct3D API의 여러 인터페이스와 메서드를 중점적으로 살펴본다. (코드는 https://github.com/d3dcoder/d3d12book에서 받을 수 있다. (chapter 6)) 정점과 입력 배치 Direct3D는 정점의 위치 이외의 추가적인 자료를 부여할 수 있다. 원하는 자료를 가진 정점 형식을 만들려면 우선 그러한 자료(벡터 형식)를 담을 구조체를 정의해야 한다. 다음은 서로 다른 두 가지 정점 형식의 예이다. 하나는 위치의 색상으로 구성되고 또 하나는 위치, 법선, 그리고 두 개의 텍스처 좌표로 구성된다. struct Vertex1 { XMFLOAT3 Pos; XMFLOAT3 Color; }; struct Vertex2 { XMFLOAT3 Pos;..

입력 조립기 단계(Input Assembler, IA) 입력 조립기 단계는 메모리에서 기하 자료(정점, 인덱스)를 읽어서 기본 도형(삼각형, 선분 등)을 조립한다. 정점(Vertex) 수학적으로, 한 삼각형의 정점은 두 변이 만나는 점이다. 선분의 경우 선분의 양 끝점이 정점이고, 하나의 점의 경우에는 그 점 자체가 정점이다. Direct3D의 정점은 본질적으로 공간적 위치 이외의 정보도 담을 수 있으며, 이를 통해 좀 더 복잡한 렌더링 효과를 낼 수 있다. 예를 들면, 조명을 구현하기 위해 정점에 법선 벡터(normal vector)를 추가하며, 텍스처 적용을 위해 정점에 텍스처 좌표를 추가한다. 또한 Direct3D는 응용 프로그램이 자신만의 정점 형식을 정의할 수 있는(성분들을 직접 정의할 수 있는..

서술자 힙 생성 스왑 체인까지 만들었다면, 응용 프로그램에 필요한 서술자/뷰들을 담을 서술자 힙을 만들어야한다. 서술자 힙은 ID3D12DescriptorHeap 인터페이스로 대표된다. 힙을 생성하는 메서드는 ID3D12Device::CreateDescriptorHeap이다. SwapChainBufferCount에 설정된 개수만큼의 렌더 대상 뷰(RTV)들과 하나의 깊이 스텐실 뷰(DSV)가 필요하다. RTV는 스왑 체인에서 렌더링의 대상이 되는 버퍼 자원을 서술하고, DSV는 깊이 판정을 위한 버퍼 자원을 서술한다. 서술자 힙은 서술자 종류마다 따로 만들어야 한다. 따라서, SwapChainBufferCount 개의 RTV들을 담을 힙 하나와 하나의 DSV를 담을 힙이 필요하다. 다음은 이 힙들을 생성..