그룹별로 리소스를 나눠서 맵을 별도로 구현을 할 것이다.
그래서 맵을 배열로 가져온다.
typeid 를 이용해서 T 타입이 어떤 타입인지 확인할 수 있다.
셰이더는 크게 두 종류로 나뉜다.
1. 그래픽스 쉐이더 (랜더링용)
2. 컴퓨트 세이더
리소스를 상속받아서 중간 부모에 쉐이더를 놓고 이중으로 파생시켜서
그래픽스와 컴퓨트로 나눈다.
쉐이더에는 private 로 ErrBlob을 만든다.
쉐이더는 리소스를 상속받았기 때문에 자신이 무슨 타입인지 명시를 해야한다.
근데 그래픽스인지 컴퓨트인지 모르기 때문에 받아온걸 넣어주도록 설정한다.
1. 그래픽스 쉐이더 (VS, HS, DS, GS, PS)
파이프라인 단계에서 사용할 쉐이더를 고르고, IA 단계에서 사용할 매쉬 모양을 고르고
이 모양을 이 쉐이더로 랜더링을 해줘라 라는 개념으로 가는 것.
업데이트에 자신이 보유하고 있는 파이프라인 쉐이더를 전달한다.
정점이 어떻게 구성되어있는지에 대한 구조체는 하나만 있으면 되지만,
이 구조체를 기반으로 만들어지는 레이아웃은 버텍스 쉐이더 종류마다 다 하나씩 따로따로 만들어져야한다.
그래서 레이아웃은 그래픽스 쉐이더 멤버 안에 있어야 한다.
모든 쉐이더들이 공유할 정점 구성정보는 어딘가에 딱 한번만 채워두면 된다. (리소스매니저에서 들고 있게 함)
리소스 매니저에서 쉐이더를 만들기 때문이다.
레이아웃도 쉐이더 안에 있기 때문에 이 쉐이더를 사용 할 때 셋팅 해야 할 레이아웃도 쉐이더가 들고 있다.
그래서 쉐이더 업데이트에는 파이프라인단계별 쉐이더만 설정할 것이 아니라 버텍스 쉐이더에서 입력되는
구조정보도 세팅을 해야한다.
topology도 이미 쉐이더 상에서 결정을 한다. (현재는 기본으로 트라이엥글로 잡아둠)