일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- I/O장치
- 동적계획법
- 렌더링 파이프라인
- 쓰레드
- 알고리즘
- 병행성
- directx
- 스케줄링
- 자료구조
- 다이나믹 프로그래밍
- 멀티프로세서
- 타입 객체
- 그리디알고리즘
- DirectX 12
- 컨디션 변수
- 병행성 관련 오류
- DirectX12
- 그리디 알고리즘
- Direct12
- 락
- 멀티쓰레드
- codility
- 영속성
- 백준
- 운영체제
- OS
- 파일시스템 구현
- 다이나믹프로그래밍
- 디자인패턴
- 프로그래머스
- Today
- Total
목록Direct12 (3)
기록공간

GPU에는 명령 대기열(Command queue)이 하나 있다. CPU는 그리기 명령들이 담긴 명령 목록(Command list)을 Direct3D API를 통해서 그 대기열에 제출한다. 여기서 중요한 점은, 일단의 명령들을 명령 대기열에 제출했다고 해도, 그 명령들을 GPU가 즉시 실행하는 것은 아니라는 점이다. 명령들은 GPU가 처리할 준비가 되어야 비로소 실행되기 시작한다. 즉, GPU가 이전에 제출된 명령들을 처리하느라 바쁘게 돌아가는 동안 명령들은 그냥 대기열에 남아 있다. 명령 대기열이 비면 GPU는 할 일이 없으므로 그냥 놀게 된다. 반대로, 대기열이 꽉 차면 GPU가 명령들을 처리해서 대기열에 자리가 생길 때까지 CPU가 놀게 된다. 상황 모두 바람직하지 않다.최적의 성능을 얻으려면 최대한..
복잡한 게임은 텍스처, 3차원 메시 등 수많은 자원을 사용한다. 그런데 그 자원들 중 항상 GPU에 필요한 것은 많지 않다. 예를 들어 야외의 숲과 숲 속에 있는 큰 동굴을 배경으로 한 게임을 생각해 보자. 동굴을 표현하는 데 쓰이는 자원은 플레이어가 동굴에 들어가기 전까지는 필요하지 않으며, 또한 동굴에 들어가면 숲의 자원은 필요하지 않다. Direct3D 12에서 응용 프로그램은 자원을 GPU 메모리로 부터 내림('퇴거')으로써, 그리고 필요한 경우 다시 GPU에 올림('입주')으로써 자원의 상주성을 관리한다. (상주성이란, 자원이 GPU 메모리에 들어 있는지에 대한 여부이다.) 상주성 관리의 핵심은 응용 프로그램이 사용하는 GPU 메모리의 양을 최소화하는 것이다. 전체 게임에 필요한 자원들을 모두 ..

DXGI(DirectX Graphics Infrastructure)는 Direct3D와 함께 쓰이는 API로 DirectX 그래픽 런타임에 독립적인 저수준(Low-Level)의 작업을 관리한다. 또한 DirectX 그래픽을 위한 기본적이고 공통적인 프레임워크를 제공한다. DXGI는 유연성을 위해 새로운 그래픽 라이브러리가 나오더라도 변하지 않을 수 있도록 구성되어 있다. 예를 들어 2차원 랜더링 API에도 3차원 렌더링 API처럼 스왑 체인과 페이지 전환이 필요하다. 이 때문에, 스왑 체인을 대표하는 인터페이스인 IDXGISwapChain은 실제로 DXGI API의 일부이다. DXGI는 그 밖에도 여러가지 공통적인 그래픽 기능성을 처리한다. 이를테면 화면 모드 전환, 디스플레이 어탭터나 모니터, 지원되는..