일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- CommandList
- 세팅
- CPU
- c
- vertex
- DirectXTK
- Direct Init
- 다이렉트 초기화
- 다중표본화
- GPU
- DESC
- swapchain
- 동기화
- RenderTargetView
- Direct3D Init
- 게임수학
- Input Assembler
- C++
- 코딩
- DirectX
- C언어
- View
- Direct3D
- engine
- 프로그래밍
- UE4
- 다이렉트X
- 전처리문
- 다이렉트X 튜토리얼
- DirectX12
- Today
- Total
목록fence (2)
비타Cpp
장치를 생성한 다음에는 CPU와 GPU의 동기화를 위한 Fence 객체를 생성한다. 또한, 이후에 필요한 서술자들의 크기도 미리 조회해서 설정해 둔다. 서술자 크기는 GPU마다 다를 수 있으므로, 이처럼 실행 시점에서 적절한 메서드를 호출해서 알아내야 한다. 나중에 서술자 크기가 필요할 때 바로 사용할 수 있도록, 크기들을 적절한 멤버 변수들에 저장해 둔다. ThrowIfFailed(md3dDevice->CreateFence(0, D3D12_FENCE_FLAG_NONE, IID_PPV_ARGS(&mFence))); mRtvDescriptorSize = md3dDevice->GetDescriptorHandleIncrementSize( D3D12_DESCRIPTOR_HEAP_TYPE_RTV); mDsvDes..
한 시스템에서 두 개의 처리 장치가 병렬로 실행되다 보니 여러 가지 동기화 문제가 발생한다. 이런 문제의 해결책 하나는 GPU가 명령 대기열의 명령들 중 특정 지점까지의 모든 명령을 다 처리할 때까지 CPU를 기다리게 하는 것이다. 대기열의 모든 명령을 처리하는 것을 가리켜 Flush(방출)이라고 한다. 이때 필요한 것이 Fence(울타리)라고 부르는 객체이다. Fence는 ID3D12Fence 인터페이스로 대표되며, GPU와 CPU의 동기화를 위한 수단으로 쓰인다. 다음은 Fence 객체를 생성하는 메서드이다. HRESULT CreateFence( UINT64 InitialValue, D3D11_FENCE_FLAG Flags, REFIID ReturnedInterface, void **ppFence )..