feat: prepare each mesh entt for rendering

This commit is contained in:
2025-11-05 11:50:57 +01:00
parent d6267f7a4b
commit b6b40837a4

View File

@ -57,6 +57,10 @@ Renderer::Renderer(std::shared_ptr<Scene> scene)
void Renderer::Init() { void Renderer::Init() {
GenerateShadowMaps(); GenerateShadowMaps();
for (auto [entt, mesh] : m_scene->m_registry.view<mesh>().each()) {
mesh.mesh->Prepare();
}
} }
void Renderer::OnWindowResized(int w, int h) { void Renderer::OnWindowResized(int w, int h) {
@ -170,14 +174,15 @@ void Renderer::RenderScene(Shader &shader) {
b.prepare(models.data(), models.size()); b.prepare(models.data(), models.size());
if (!prevState) { if (!prevState) {
std::cout << "[DEBUG] enabling batch" << std::endl; std::cout << "[DEBUG] enabling batch" << std::endl;
m.object->EnableBatch(b.m_instanceBuffer); // TODO:
// m.object->EnableBatch(b.m_instanceBuffer);
} }
m.object->Render(shader, batchItems.size()); m.mesh->Render(shader);
} }
shader.setBool("u_isInstanced", false); shader.setBool("u_isInstanced", false);
for (auto [entity, transf, mesh] : m_scene->m_registry.view<Transform, mesh>(entt::exclude<batch, batch::item>).each()) { for (auto [entity, transf, mesh] : m_scene->m_registry.view<Transform, mesh>(entt::exclude<batch, batch::item>).each()) {
if (mesh.object == nullptr) { if (mesh.mesh == nullptr) {
std::cerr << "WARN: Entity doesn't have a mesh to render" << std::endl; std::cerr << "WARN: Entity doesn't have a mesh to render" << std::endl;
return; return;
} }
@ -196,7 +201,7 @@ void Renderer::RenderScene(Shader &shader) {
shader.setMat4("u_model", m_model); shader.setMat4("u_model", m_model);
mesh.object->Render(shader, 1); mesh.mesh->Render(shader);
} }
} }