본문 바로가기

DirectX49

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.
230112_D2D 렌더링 파이프라인 개요_2 월드 변환의 순서 : 크기 -> 회전 -> 위치 (크자위) * 행렬은 곱셈의 순서가 바뀌면 결과가 달라진다 (교환법칙이 성립하지 않기 때문) 원근감 = 투영 변환 크기변환이 이뤄지지 않는 경우 직교투영을 쓰기도 함 투영 변환이 끝나면 파란색 네모 안에 모든 물체가 들어감 * NDC 좌표계란? x, y는 -1~1 범위, z는 0~1 범위로 이루어진 좌표계를 의미함 * NDC 좌표계를 쓰는 이유? 여러 해상도에 대응하기 위해서임 이렇게 비율 좌표로 바뀌어 있는 상태를 클립공간이라고도 한다. 정점처리단계를 지난 정점은 레스터라이저단계로 넘어간다 레스터라이저단계에서는 화면상에 나와야 하는 픽셀들을 계산해서 만들어줌 레스터라이저를 거치면서 각각 픽셀 위치에 맞는 정점을 넣어준다. *UV좌표란? 정점에서 어디서 픽.. 2023. 1. 12.