summaryrefslogtreecommitdiff
path: root/model.cpp
diff options
context:
space:
mode:
authorquou <quou@disroot.org>2024-12-29 23:33:39 +1100
committerquou <quou@disroot.org>2024-12-29 23:33:39 +1100
commit131f0b370f52f70f3dc4a6341d543ef2329cc00e (patch)
treee1cbeb0ccd976d371d2d6dcdee2928ce9539014f /model.cpp
parente25b20717523e579bb6f1e0d17b635c71bad6fab (diff)
add a seperate update_cbuffers function to models to avoid doing it on every render
Diffstat (limited to 'model.cpp')
-rw-r--r--model.cpp17
1 files changed, 12 insertions, 5 deletions
diff --git a/model.cpp b/model.cpp
index dd14085..3b0e90f 100644
--- a/model.cpp
+++ b/model.cpp
@@ -156,16 +156,13 @@ void Model::update_transforms() {
meshes[i].get_world(*this);
}
-void Model::render(
+void Model::update_cbuffers(
Device* dev,
- Arena* a,
- Render_Pass& pass,
const m4f& transform,
const m4f& view_projection
) {
int i, c = mesh_count;
Mesh* meshes = get_meshes();
- Context& ctx = dev->get_ctx();
MVP_Cbuffer* cbuffers = (MVP_Cbuffer*)dev->map_buffer(
mvp,
0,
@@ -175,8 +172,18 @@ void Model::render(
cbuffers[i].view_projection = view_projection;
cbuffers[i].model = transform * meshes[i].world;
}
- bool depth_only = !pass.colour_count;
dev->unmap_buffer(mvp);
+}
+
+void Model::render(
+ Device* dev,
+ Arena* a,
+ Render_Pass& pass
+) {
+ int i, c = mesh_count;
+ Mesh* meshes = get_meshes();
+ Context& ctx = dev->get_ctx();
+ bool depth_only = !pass.colour_count;
for (i = 0; i < c; i++) {
Mesh& mesh = meshes[i];
Shader& shader = dev->get_shader(mesh.shader);