Texture
텍스처에는 여러가지 종류가 있다.
- Texture 1D
- // 그림
- 축이 한개만 있는 텍스처
- Texture 2D
- 지금까지 사용했던 텍스처
- Texture 3D
- 2D 텍스처를 여러가 붙여놓은 텍스처
- Texure Cube
- 6개의 면으로 이루어진 텍스처
이중에 TextureCube를 이용해서 CubeMap을 만들어보자
CubeMap
Mesh에 TexureCube를 입힌 오브젝트이다.
CubeMap.fx
TextureCube CubeMap;
float4 PS(VertexOutput input) : SV_Target
{
return CubeMap.Sample(LinearSampler, input.oPosition);
}
CubeMpa이라는 TextureCube를 만들어주고 PixelShader부분에서 이 텍스쳐를 적용시킨다.
CubeMap.cpp
CubeMap::CubeMap(Shader* shader)
: shader(shader)
{
cube = new MeshSphere(shader, 0.5f);
sSrv = shader->AsSRV("CubeMap");
}
CubeMap::~CubeMap()
{
SafeDelete(cube);
SafeRelease(srv);
}
void CubeMap::Texture(wstring file)
{
SafeRelease(srv);
file = L"../../_Textures/Environment/" + file;
Check(D3DX11CreateShaderResourceViewFromFile(D3D::GetDevice(), file.c_str(), nullptr, nullptr, &srv, nullptr));
}
이동 관련 함수를 제외하고 설명한다.
그냥 쉐이더와 크기는 적용시킨다.
이 상태로 렌더링을 하면
잘 나오는데 지구본이라 큐브를 볼때 이상하다. ㅋㅋㅋ
큐브가 아니고 구로 설정하니 자연스러워졌다.