본문 바로가기

전체 글330

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.
230113_D2D 삼각형 그리기 예습 1. 버퍼 생성 ID3D11Buffer는 GPU 메모리에 저장된 버퍼를 의미한다. 주로 버텍스데이터, 인덱스데이터, 상수 데이터를 저장할 때 사용된다. ID3D11Buffer를 사용하면 GPU에서 사용할 데이터를 저장할 수 있고, 이를 통해 정점 쉐이더, 픽셀 쉐이더에 전달할 수 있다. 용도에 따라 정점 버퍼, 인덱스 버퍼, 상수 버퍼 등으로 분류할 수 있다. 2. 쉐이더 생성 쉐이더 코드 HLSL, GLSL로 작성되며 는 GPU가 이해할 수 있는 바이너리로 컴파일되어야 한다. ID3DBlob는 컴파일된 쉐이더 코드를 저장하는데 사용된다. ID3D11VertexShader는 3D 모델의 정점 데이터를 처리하는데 사용되는 정점 쉐이더를 나타낸다. 정점 쉐이더는 3D 모델의 정점 데이터를 가지고 투영변환, .. 2023. 1. 14.
220113_D2D 장치 초기화 ComPtr란? : C++/WinRT에서 사용하는 스마트 포인터 D3D11 프로그래밍에서는 Direct3D 11 API를 사용하기 때문에 ComPtr을 사용하면 안전하고 편리하게 COM객체를 관리할 수 있다. DXGI(DirectX Graphic Infrastructure)란? : Direct3D 10 이상 버전을 사용하는 애플리케이션에서 GPU를 관리하는데 필요한 기능을 제공하는 라이브러리 FAILED 매크로란? D3D11의 장치를 생성하고 난 후에는 FAILED 매크로를 통해 제대로 만들어졌는지 확인하는 것이 좋다. FAILED 매크로는 성공하면 0을 반환하고 실패하면 0 이외의 수를 반환한다. 관례상 성공하면 S_OK(0x00000000), 실패하면 E_FAIL(0x80004005)를 반환한다. 1.. 2023. 1. 13.