본문 바로가기

DirectX/[Inflearn_rookiss] Part2: DirectX1235

3. RootTable 지난 번에 설명했듯 RootDescriptor는 무한정으로 늘릴 수 없다. 어떤 정책을 사용할 것인가에 따라 해당 DescriptorTable이 활성화된다. 1번을 켜겠다 or 2번을 켜겠다에 따라 활성화되는 테이블이 달라진다. - ConstantBuffer에 값을 넣고 그 값을 참조하는 View를 만든다. - View를 참조하는 DescriptorHeap을 만든다 - 그 Heap을 Shader Visible한 Heap에 복사한다. (TableDescriptorHeap) - 그려질 여러 도형에 대해 값을 세팅하고 각각 적용하려면 타이밍 문제가 발생하므로 - Heap을 참조하는 View는 여러 개가 되어야 한다. (값을 써넣는 부분은 즉시 이루어지고, 상수 버퍼를 참조하는 부분은 CommandList로 작.. 2023. 1. 16.
2. Constant Buffer & Root Signature 1. Constant Buffer cbuffer TEST_B0 : register(b0) { float4 offset0; } cbuffer TEST_B1 : register(b1) { float offset1; } - cbuffer : 상수 버퍼를 선언하는 키워드 - TEST_B0 : 상수 버퍼 이름 - register(b0) : 상수 버퍼를 저장할 레지스터 공간을 지정 (b0은 GPU에 지정된 레지스터 공간) - float offset0 : 상수 버퍼 내부에 정의된 변수 이름과 타입 상수 버퍼(Constant Buffer란?) - GPU에서 프로그램 실행 도중 사용되는 상수값 - 이런 상수 값들은 쉐이더 프로그램에서 사용되며 프로그램 실행 중 동적으로 수정될 수 있다. *상수 버퍼의 크기는 256의 배.. 2023. 1. 15.
1. DirectX12 초기화 1. Devcie 1-1. IDXGIFactory - SwapChain을 생성할 때 사용 1-2. ID3D12Device - DescriptorHeap, CommandQueue 등을 생성할 때 사용 - DX12의 메인 바디 역할을 한다. DescriptorHeap이란? - GPU로 전달할 데이터를 관리하는 객체 - Descriptor는 GPU에서 사용할 데이터를 의미한다. - DescriptorHeap을 사용하면 GPU에서 사용할 데이터를 효율적으로 관리할 수 있다. CommandQueue란? - 커맨드를 전달하는 객체 - 커맨드는 GPU에서 수행해야 할 작업을 의미하고 커맨드 큐에 의해 전달된다. 왜 큐에 담아서 전달하지? - 작업을 순서에 맞게 실행할 수 있다.(순차적으로 실행하며, 이전 작업이 끝나.. 2023. 1. 15.