본문 바로가기
DirectX

DX2D) #3 텍스처와 UV

by 준모 2024. 12. 3.

 

IndexBuffer

사각형을 만들기 위해서는 4개의 정점이 아닌 6개의 정점이 필요함 (삼각형 * 2).

 

즉 6개의 VertexBuffer를 만들어야 하는데,  6개의 정점중 중복되는 정점이 생기기 때문에 

 

VertexBuffer의 크기를 6으로 두는것은 메모리 손해이다.

 

즉 VertexBuffer에는 중복되지 않게 4개의 정점 정보를 넣어주고

 

IndexBuffer에 정점의 순서를 넣어주면 된다.

 

 

IndexBuffer를 사용하려면 기존의 _DeviceContext->Draw() 함수가 아닌

_DeviceContext->DrawIndexed()를 사용해야 한다.

 

UV

uv 좌표란, 텍스처 이미지를 3차원 공간애 맵핑하기 위한 2차원 공간에서의 좌표를 의미한다.

 

이미지의 크기가 얼마나 크던 작던, 최소는 0, 0이고 최대 좌표는 1, 1의 좌표를 가진다.

 

이를 객체에 이미지를 씌울 때는 0과 1에 입히려는 이미지의 크기로 나눈 비율을 대입하여 이미지를 출력한다.

 

 

ID3D11ShaderResourceView

PixelShader에서 텍스처를 이용하여 작업하러면 CPU 에서 GPU공간으로 넘겨줘야하는데,

 

이때 ShaderResourceView를 이용하여 넘겨준다.

 

LoadFromWICFile() 함수를 이용하여 원하는 텍스처(png, jpg) 에서 데이터를 추출하여 

 

CreateShaderResourceView() 함수를 이용하여 ShaderResourceView 만든 후 

 

PSSetShaderResources() 함수로 GPU로 보내면 된다.

 

Shader에선 아래 사진처럼 sampler와 uv값을 이용하여 색상을 지정해주면 된다.

'DirectX' 카테고리의 다른 글

DX2D) #4 Constant Buffer  (1) 2024.12.24
DX2D) #2 삼각형 띄우기  (0) 2024.10.22
DX2D) #1-4 장치초기화_Rendering  (1) 2024.10.09
DX2D) #1-3 장치초기화_Viewport  (1) 2024.10.07
DX2D) #1-2 장치초기화_RenderTargetView  (0) 2024.10.07