공부/2D강의

230126 강의

TH.Wert 2023. 1. 26. 23:37

저번에 쿠키런에 이어서 오늘은 배경을 꾸미는 것에 대해 했었습니다. 배경은 아이템이나 캐릭터에 비해 크기가 큽니다. 그래서 이번에는 좀 다른 방식으로 배경이 나오도록 하는 법을 배웠습니다.

 

SPACE에 대해 사용하였습니다. 배경에 space = SPACE::SCREEN을 사용하였습니다. 안에 구조체로 되어 있습니다.

enum class SPACE
{
	WORLD,
	SCREEN,
};

위와 같이 SCREEN을 사용하였는데 가운데가 0, 0입니다. 이미지가 가운데가 0, 0인 곳으로 화면에 고정됩니다.

새롭게 sampler에 대해 배웠습니다. 이미지의 원래 사이즈와 다르게 크기를 조절했을 때 사람이 봤을 때는 어떤 색으로 칠해야 될지 애매한 경우가 생길 수 있습니다. 이때, 이 sampler가 적당하게 색을 채워주는 역할을 하게 됩니다. 어떤 자료에서 일부 값을 추출한다고 보시면 됩니다.

이미지는 0 ~ 1 사이에서만 채워지는데 1을 넘어갔을 경우 추출해서 0으로 돌아가 다시 채워주는 것을 샘플링이라고 하고 SRV(Shader Resource View)에서 이미지의 자원을 얻어서 샘플러가 추출하는 방식입니다. 그 후에 PS에 바인딩을 하게 됩니다.

 

ObImage.cpp에 들어가보면

samplerDesc.Filter = D3D11_FILTER_MIN_MAG_MIP_POINT;
samplerDesc.AddressU = D3D11_TEXTURE_ADDRESS_WRAP;
samplerDesc.AddressV = D3D11_TEXTURE_ADDRESS_WRAP;
samplerDesc.AddressW = D3D11_TEXTURE_ADDRESS_WRAP;

이러한 코드가 있습니다. 뒤의 구조체를 보면 여러 가지가 있습니다.

D3D11_TEXTURE_ADDRESS_WRAP은 위의 내용처럼 추출해서 0으로 돌아가 다시 채워주는 역할을 합니다.

D3D11_TEXTURE_ADDRESS_CLAMP는 이미지의 마지막 픽셀만 계속 늘리는 역할을 합니다.

D3D11_TEXTURE_ADDRESS_MIRROR는 데칼코마니처럼 원본 이미지 이후에 반전된 이미지로 추출하여 채우는 역할을 합니다.

 

다음은 DeltaScale에 대해서 배웠습니다. Delta는 초당 이동값이고 Scale은 크기입니다. 붙이게 되면 초당 이동값의 크기가 되는데 이것을 조절하게 되면 이동 속도를 조절할 수 있습니다. 예를 들어 쿠키런에서 부스터를 먹으면 잠시동안 빨라지게 되는 효과에 사용할 수 있습니다.

 

내일은 8방향 이동에 대해 배우게 됩니다. 그 뒤에 이어서 다음 주에는 타일맵을 배운다고 합니다.

2D에 관해서는 거의 다 끝나가고 포트폴리오 제작을 앞두고 있습니다.

2D이후에 취업을 하거나 국비지원으로 3D를 배우거나 길이 갈릴 것 같습니다.

읽어주셔서 감사합니다.