Software/DirectX
-
4. 타이머Software/DirectX 2024. 5. 24. 09:27
Table of Contents1. 타이머 1. 타이머 게임에서 오브젝트의 애니메이션은 필수 요소이다. 오브젝트가 애니메이션을 수행하려면 프레임마다 일정한 시간이 요구되는데 특히 프레임간 경과시간(Elapsed time)을 정확하게 측정할 수 있어야 한다. 프레임이 높을 경우 프레임간 시간이 짧으므로 정교한 타이머가 필요하다. 성능 타이머(Performance counter)윈도우가 제공하는 정교한 타이머이며 Performance counter라고도 부른다. Windows.h에 들어있다. 성능타이머 사용예시__int64 currTime;QueryPerformanceCounter((LARGE_INTERGER*)&currTime);위 함수를 통해 현재 시간 값을 64비트 정수로 돌려준다.__int64 cou..
-
3. DirectX 초기화Software/DirectX 2024. 5. 24. 09:21
Table of Contents- 초기화 단계1. D3D Device 생성2. Fence설정3. 4X MSAA지원 여부 점검4. 명령대기열 생성과 설정5. Swap Chain 생성6. 서술자 힙 (View Heap) 생성7. 렌더 타겟뷰(RTV)생성8. 뷰 포트 설정9. 가위 직사각형(Scissor rectangle)설정 초기화 단계D3D초기화 과정은 꽤 길지만, 프로그램 실행 시 한번만 해주면 된다. 초기화는 다음과 같은 단계로 구성 된다- D3D12CreateDevice를 사용해서 ID3D12Device를 생성한다.- ID3D12Fence 를 생성하고 View들의 크기를 얻는다.- 4X MSAA(MultiSampling Anti- Aliasing)을 지원하는지 점검- Command Queue와 C..
-
2. CPU와 GPU의 상호작용Software/DirectX 2024. 5. 24. 09:15
Table of Contents1. 명령대기열2. CPU와 GPU의 동기화 작업 Fence3. 자원 상태 전이 장벽(transition resource barrier)4. 명령 목록 다중스레딩1. 명령대기열(Command Queue) 그래픽 프로그래밍에는 CPU와 GPU가 사용되며 둘은 병렬로 돌아간다. 최적의 성능을 얻으려면 두 처리 장치 모두 바쁘게 돌아가야하며 동기화를 최소화 하여야한다. 동기화는 한 처리장치가 작업을 마칠때까지 다른 장치가 처리를 멈추고 대기해야함을 의미하기 때문이다. 따라서 동기화는 병렬성을 망친다. 일반적으로 CPU는 명령대기열(Command Queue)에 GPU가 처리할 작업을 DirectX를 통해 제출한다. GPU는 명령대기열에서 명령을 순차대로 뽑아서 그리기를 수행한다. ..