[DX] MeshRenderer

vector·2025년 11월 15일

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;

	// Mesh
	shared_ptr<Mesh> _mesh;
	//Material
	shared_ptr<Material> _material;
};
  1. 게임 엔진에서 렌더링 컴포넌트의 구조를 이해하는 것이 중요
  2. Material 개념
  3. 렌더링 Pipeline을 자연스럽게 학습 가능
  4. Animator와의 협업 구조
profile
게임 클라이언트 프로그래머 준비중 (공부 및 기록용)

0개의 댓글