게임프로그램의 구조를 짜고 있는데요
조금 난항을 겪고 있는 문제가 있어 질문드립니다
존재하는 클래스:
CGame
Main()
Render()...
CPlayer
Draw()..
CCamera
GetViewMatrix()
GetProjectionMatrix()
CShader
GetVertexShader()
GetPixelShader()
GetVSTable()
GetPSTable()
대충 질문에 들어가는 클래스는 요정도인데요
CGame안에 있는 Main함수에서 Render 함수를 불러서 화면에 여러가지 오브젝트를 렌더링하고 있구요
CGame클래스 내부에서 protected로 각종 클래스의 인스턴스를 선언하고 있습니다
이제 Render함수 내에서 여러가지 인스턴스를 사용해 쉐이더 적용, 렌더링 등등을 하는데요
지금까진 그냥 CGame에서 DrawPlayer함수를 정의해서 그안에서 렌더링을 했는데요(각종 인스턴스가 멤버변수에 다 선언되어 있으므로)
근데 DrawPlayer가 CGame 안에 있는건 좀 이상하다 생각해서 이걸 CPlayer로 옮기려고 하는데요
그러다보니 DrawPlayer에서 사용했던 각종 인스턴스를 어떻게 넘겨주어야 할지 고민입니다
그냥 매개변수로 넘겨버리자니 매개변수가 6개는 넘어가는 상황이 되고..
그렇다고 매개변수로 넘겨주지 않으면 뷰행렬등등 다른 클래스의 멤버변수를 어떻게 넘겨줘야 하나 고민되고..
그냥 정적 클래스를 만들어서 그안에 각종 인스턴스를 선언해서 필요한 인스턴스를 바로 쓰는식으로도 생각을 해보았으나..
저렇게 짜버리면 전지전능한 슈퍼 클래스가 탄생(?) 하는게 아닌가싶어서(이런 클래스를 만들면 안된다고 배웠습니다) 고민됩니다..
렌더링할때 쉐이더에 필요한 정보를 넘겨줘야하는데 이때 다른클래스의 멤버변수(뷰행렬등)가 필요해서..이러지도 저러지도 못하고 있습니다
이런경우에 어떻게 짜야하나요? 혹시 이런경우에 유용하게 쓸 수 있는 디자인패턴 같은게 있을까요?
답변해주시면 정말 감사하겠습니다.
VS2017 사용에 DX9입니다.