feat: prepare each mesh entt for rendering
This commit is contained in:
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user