DirectX49 230116_D2D 삼각형 그리기 D3DCompileFromFile은 쉐이더코드를 컴파일해서 바이너리로 만들어주는 함수 ID3DBlob에 저장됨 ID3DBlob은 컴파일된 쉐이더 코드를 저장하는데 사용된다. 1. Device, Context 생성 - 초기화 단계 2. SwapChain 생성 - 생성되면서 BackBuffer를 가져오고 GetBuffer 함수를 통해 가져올 수 있다. 3. SwapChain을 통해 RenderTargetView 생성 - 가져온 BackBuffer를 통해 RenderTargetView를 생성할 수 있다. 4. 쉐이더 컴파일 및 쉐이더 생성 (Vertex, Pixel) - 쉐이더 코드 컴파일 (ID3DBlob에 저장됨) 후 그 코드를 통해 Shader를 만들 수 있다. ID3DBlob* vsBlob; ID3D1.. 2023. 1. 16. 4. Texture Mapping - 텍스쳐 매핑(Texture Mapping)이란? 3D 컴퓨터 그래픽에서 텍스쳐를 모델의 표면에 부착하는 것 - UV 좌표계란? - 텍스쳐 이미지의 2D 좌표를 3D 모델의 표면에 매핑할 때 사용되는 좌표계 - U는 가로축, V는 세로축을 나타낸다. - 3D 모델의 표면의 정점에는 UV 좌표가 할당되어 있고, 그 좌표를 통해 텍스쳐 이미지를 3D 모델 표면에 매핑할 수 있다. *Texture를 사용하면서 바뀌게 된 점 1. uv좌표가 추가됨에 따라 Shader에서 받는 인자도 추가됨 Texture2D tex_0 : register(t0); SamplerState sam_0 : register(s0); struct VS_IN { float3 pos : POSITION; float4 color : COLO.. 2023. 1. 16. 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 ··· 7 8 9 10 11 12 13 다음