일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- swapchain
- C++
- 게임수학
- CommandList
- 동기화
- 프로그래밍
- DirectX
- View
- c
- 다이렉트X 튜토리얼
- engine
- Direct Init
- UE4
- vertex
- C언어
- DESC
- 전처리문
- GPU
- CPU
- 다이렉트 초기화
- Input Assembler
- DirectXTK
- 코딩
- 다이렉트X
- Direct3D
- 세팅
- DirectX12
- RenderTargetView
- 다중표본화
- Direct3D Init
- Today
- Total
목록Resource (2)
비타Cpp
복잡한 게임은 텍스처, 3차원 메시 등 많은 자원들을 사용한다. 그런데 그 자원들 중 항상 GPU에 상주해 있어야 하는것들은 많지 않다. 즉, 필요한 자원은 GPU의 메모리에 '입주' 시켜야 하고, 반대로 한동안 필요 없는 자원은 GPU의 메모리에서 '퇴거' 시킴으로써 자원의 상주성(Residency)를 관리할 필요가 있다. 예를들어, 게임에서 숲과 숲 속에 있는 큰 동굴이 있을때, 숲에서 동굴안을 표현하는 자원은 필요 없으며, 동굴 안에서도 숲의 자원이 필요 없을때 상주성 관리가 필요하다. 상주성 관리의 핵심은 응용 프로그램이 사용하는 GPU 메모리의 양을 최소화 하는데에 있다. 게임에서 사용되는 모든 자원이 메모리에 들어갈수 없을수도 있고, 다른 응용프로그램도 메모리를 사용 해야 할 수도 있기 때문에..
렌더링 과정에서 GPU는 자원들에 자료를 기록하거나 자원들에서 자료를 읽어 들인다. Draw() 명령을 호출하기 전에, 먼저 참조할 자원들을 렌더링 파이프라인에 묶어야(Bind) 한다. 이를 가리켜 자원을 파이프라인에 "연결한다(link)" 또는 "바인딩한다"라고 말한다. 하지만 GPU자원들이 파이프 라인에 직접 묶이는 것은 아니다. 실제로 파이프라인에 묶이는 것은 해당 자원을 참조하는 서술자(Descriptor) 객체이다. 서술자 객체는자원을 GPU에게 서술해주는 경량의 자료구조라고 할 수 있다. 이는 하나의 간접층(level of indirection)이다. 이처럼 간접층을 두는 이유는, GPU자원이라는 것이 사실상 범용적이므로, 같은 자원을 렌더링 파이프라인의 다른 단계(Stage) 에서 사용할수 ..