MeshRenderer
- GameObject를 실제 화면에 그리는 핵심 컴포넌트
- Mesh + Material 조합으로 렌더링 정보를 제공
- RenderManager가 MeshRenderer들을 찾아서 GPU에 전달
#pragma once
#include "Component.h"
#include "Material.h"
#include "Shader.h"
class Mesh;
class Material;
class MeshRenderer : public Component
{
using Super = Component;
public:
MeshRenderer(ComPtr<ID3D11Device> device, ComPtr<ID3D11DeviceContext> deviceContext);
virtual ~MeshRenderer();
void SetMaterial(shared_ptr<Material> material) { _material = material; }
void SetShader(shared_ptr<Shader> shader) { _material->SetShader(shader); }
void SetMesh(shared_ptr<Mesh> mesh) { _mesh = mesh; }
void SetTexture(shared_ptr<Texture> texture) { _material->SetTexture(texture); }
auto GetMaterial() { return _material; }
auto GetVertexShader() { return GetMaterial()->GetShader()->GetVertexShader(); }
auto GetInputLayout() { return GetMaterial()->GetShader()->GetInputLayout(); }
auto GetPixelShader() { return GetMaterial()->GetShader()->GetPixelShader(); }
shared_ptr<Mesh> GetMesh() { return _mesh; }
shared_ptr<Texture> GetTexture() { return GetMaterial()->GetTexture(); }
private:
ComPtr<ID3D11Device> _device;
friend class RenderManager;
shared_ptr<Mesh> _mesh;
shared_ptr<Material> _material;
};
- 게임 엔진에서 렌더링 컴포넌트의 구조를 이해하는 것이 중요
- Material 개념
- 렌더링 Pipeline을 자연스럽게 학습 가능
- Animator와의 협업 구조