summaryrefslogtreecommitdiff
path: root/src/simple_renderer.cpp
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/simple_renderer.cpp26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/simple_renderer.cpp b/src/simple_renderer.cpp
new file mode 100644
index 0000000..b4c115a
--- /dev/null
+++ b/src/simple_renderer.cpp
@@ -0,0 +1,26 @@
+#include "simple_renderer.hpp"
+
+namespace app {
+
+SimpleRenderer::SimpleRenderer(xe::XeEngine &xeEngine)
+ : xeRenderSystem{xeEngine, "res/shaders/simple_shader.vert.spv", "res/shaders/simple_shader.frag.spv", sizeof(PushConstant), sizeof(UniformBuffer)} {};
+
+void SimpleRenderer::render(std::vector<xe::XeGameObject> &gameObjects, xe::XeCamera &xeCamera) {
+
+ UniformBuffer ubo{};
+ ubo.projectionView = xeCamera.getProjection() * xeCamera.getView();
+ xeRenderSystem.loadUniformObject(&ubo, sizeof(ubo));
+
+ for(auto &obj : gameObjects) {
+ PushConstant pc{};
+ pc.modelMatrix = obj.transform.mat4();
+ pc.normalMatrix = obj.transform.normalMatrix();
+ xeRenderSystem.loadPushConstant(&pc, sizeof(pc));
+ xeRenderSystem.render(obj);
+ }
+
+ xeRenderSystem.stop();
+
+}
+
+} \ No newline at end of file