summaryrefslogtreecommitdiff
path: root/src/simple_renderer.cpp
blob: b4c115a8d38a34398937af89e71fc86f277cdb11 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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();

}

}