Resources

ㅋㅋ·2022년 7월 22일
0

DirectX12강의

목록 보기
21/39

Cube

높이가 h, 깊이가 d, 넓이가 w일 때

육면체의 중앙이 원점에 있을 때 꼭지점의 좌표들을 계산할 수 있음

=>
육면체 정면 좌표
(-w, h, -d) / (w, h, -d)
(-w, -h, -d) / (w, -h, -d)

위와 같이 뒷면 좌표들도 구하면 된다


Sphere

원점으로 부터 r만큼 떨어진 위에 북극점, 아래에 남극점을 찍음

북극점에서 남극점으로 내려오면서 원의 표면에 일정한 간격으로 점을 찍어둔다

각 점들을 위층, 아래층 점들과 삼각형으로 이어 구와 비슷한 형태를 만들 수 있음

점이 많을 수록 구와 비슷해진다.


Obejct 클래스

컴포넌트, 리소스, 게임 오브젝트의 최상위 클래스

enum class OBJECT_TYPE : uint8
{
	NONE,
	GAMEOBJECT, // PREFAB
	COMPONENT,
	MATERIAL,
	MESH,
	SHADER,
	TEXTURE,

	END
};

오브젝트로 관리될 클래스들


Resources 클래스

object 클래스들을 관리하는 매니저 클래스

리소스 => 메쉬, 메테리얼, 쉐이더: 파일

게임 오브젝트 => 프리팹, 블루프린트: 파일

컴포넌트 => 스크립트: 파일

class Resources
{
	DECLARE_SINGLE(Resources)

public:
	template<typename T>
	shared_ptr<T> Load(const wstring& key, const wstring& path);

	template<typename T>
	bool Add(const wstring& key, shared_ptr<T> object);

	template<typename T>
	shared_ptr<T> Get(const wstring& Key);

	template<typename T>
	OBJECT_TYPE GetObjectType();

	...

private:
	using KeyObjMap = std::map<wstring, shared_ptr<Object>>;
	array<KeyObjMap, OBJECT_TYPE_COUNT> _resources;
};

파일들은 파일 경로를 통하여 add나 load 시 맵에 등록해서 캐싱.


템플릿 함수의 경우 헤더에 선언 후 구현을 cpp에 하면

기본적으로는 컴파일 시 에러가 뜬다

=>

cpp 파일에 명시적으로 템플릿의 자료형을 써서 정의 해두거나

헤더 파일에 구현 (많아질 시 inl 파일을 만들어 거기서 구현)

0개의 댓글