diff options
Diffstat (limited to 'src/simple_renderer.cpp')
-rw-r--r-- | src/simple_renderer.cpp | 26 |
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 |