Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 다이렉트 초기화
- c
- 게임수학
- 다중표본화
- DirectXTK
- Direct3D
- CPU
- 전처리문
- 코딩
- RenderTargetView
- View
- C언어
- 세팅
- GPU
- 다이렉트X
- DirectX12
- UE4
- CommandList
- 프로그래밍
- C++
- DirectX
- Direct Init
- DESC
- vertex
- 다이렉트X 튜토리얼
- 동기화
- Input Assembler
- engine
- Direct3D Init
- swapchain
Archives
- Today
- Total
비타Cpp
Direct3D의 초기화 - 4. 명령 대기열과 명령 목록 생성 본문
명령 대기열(Command Queue)을 대표하는 인터페이스는 ID3D12CommandQueue이고 명령 할당자(Command Allocator)를 대표하는 인터페이스는 ID3D12CommandAllocator, 명령 목록(Command List)를 대표하는 인터페이스는 ID3D12GraphicCommandList이다.
다음 함수는 명령 대기열과 명령 할당자, 명령목록을 생성하는 방법을 보여준다.
//D3DApp.h
Microsoft::WRL::ComPtr<ID3D12CommandQueue> mCommandQueue;
Microsoft::WRL::ComPtr<ID3D12CommandAllocator> mDirectCmdListAlloc;
Microsoft::WRL::ComPtr<ID3D12GraphicsCommandList> mCommandList;
//D3DApp.cpp
void D3DApp::CreateCommandObjects()
{
D3D12_COMMAND_QUEUE_DESC queueDesc = {};
queueDesc.Type = D3D12_COMMAND_LIST_TYPE_DIRECT;
queueDesc.Flags = D3D12_COMMAND_QUEUE_FLAG_NONE;
ThrowIfFailed(md3dDevice->CreateCommandQueue(&queueDesc, IID_PPV_ARGS(&mCommandQueue)));
ThrowIfFailed(md3dDevice->CreateCommandAllocator(
D3D12_COMMAND_LIST_TYPE_DIRECT,
IID_PPV_ARGS(mDirectCmdListAlloc.GetAddressOf())));
ThrowIfFailed(md3dDevice->CreateCommandList(
0,
D3D12_COMMAND_LIST_TYPE_DIRECT,
mDirectCmdListAlloc.Get(), //연관된 명령 할당자
nullptr, //초기 파이프라인 상태 객체
IID_PPV_ARGS(mCommandList.GetAddressOf())));
//Command리스트를 닫고 시작해야한다.
//다시 Command를 작성할때는 닫혀있어야 하기때문이다.
mCommandList->Close();
}
CreateCommandList 호출 시 파이프라인 상태 객체 매개변수에 널 포인터를 지정했다. 이번에는 어떤 그리기 명령도 제출하지 않으므로 유효한 파이프라인 상태 객체를 지정하지 않았다.
'DirectX12 > 튜토리얼' 카테고리의 다른 글
Direct3D의 초기화 - 6. 서술자 힙 생성 (0) | 2021.10.04 |
---|---|
Direct3D의 초기화 - 5. 교환 사슬(Swapchain)의 서술과 생성 (0) | 2021.10.02 |
Direct3D의 초기화 - 3. 4X MSAA 품질 수준 지원 점검 (0) | 2021.10.01 |
Direct3D의 초기화 - 2. 울타리 생성과 서술자 크기 얻기 (0) | 2021.10.01 |
Direct3D의 초기화 - 1. 장치 생성(Create Device) (0) | 2021.10.01 |
Comments