summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTyler Murphy <tylermurphy534@gmail.com>2022-09-21 12:36:12 -0400
committerTyler Murphy <tylermurphy534@gmail.com>2022-09-21 12:36:12 -0400
commit76bae46dbc167838531eaae85b0d41aab5e0741f (patch)
treee1edeb3634a866ae3c16bbdcdac4ee8500a21bdf /src
parentrecreate descriptors (diff)
downloadminecraftvulkan-76bae46dbc167838531eaae85b0d41aab5e0741f.tar.gz
minecraftvulkan-76bae46dbc167838531eaae85b0d41aab5e0741f.tar.bz2
minecraftvulkan-76bae46dbc167838531eaae85b0d41aab5e0741f.zip
self define descriptors
Diffstat (limited to 'src')
-rw-r--r--src/simple_renderer.cpp24
-rw-r--r--src/simple_renderer.hpp2
2 files changed, 17 insertions, 9 deletions
diff --git a/src/simple_renderer.cpp b/src/simple_renderer.cpp
index a7016f9..82c2e38 100644
--- a/src/simple_renderer.cpp
+++ b/src/simple_renderer.cpp
@@ -1,29 +1,37 @@
#include "simple_renderer.hpp"
+#include "xe_render_system.hpp"
+
+#include <iostream>
namespace app {
-SimpleRenderer::SimpleRenderer(xe::XeEngine &xeEngine, xe::XeImage *xeImage)
- : xeRenderSystem{xeEngine, "res/shaders/simple_shader.vert.spv", "res/shaders/simple_shader.frag.spv", sizeof(PushConstant), sizeof(UniformBuffer), xeImage} {};
+SimpleRenderer::SimpleRenderer(xe::XeEngine &xeEngine, xe::XeImage *xeImage) {
+ xeRenderSystem = xe::XeRenderSystem::Builder(xeEngine, "res/shaders/simple_shader.vert.spv", "res/shaders/simple_shader.frag.spv")
+ .addPushConstant(sizeof(PushConstant))
+ .addUniformBinding(0, sizeof(UniformBuffer))
+ .addTextureBinding(1, xeImage)
+ .build();
+}
void SimpleRenderer::render(std::vector<xe::XeGameObject> &gameObjects, xe::XeCamera &xeCamera, xe::XeImage *xeImage) {
- xeRenderSystem.loadTexture(xeImage);
+ xeRenderSystem->loadTexture(1, xeImage);
- xeRenderSystem.start();
+ xeRenderSystem->start();
UniformBuffer ubo{};
ubo.projectionView = xeCamera.getProjection() * xeCamera.getView();
- xeRenderSystem.loadUniformObject(&ubo);
+ xeRenderSystem->loadUniformObject(0, &ubo);
for(auto &obj : gameObjects) {
PushConstant pc{};
pc.modelMatrix = obj.transform.mat4();
pc.normalMatrix = obj.transform.normalMatrix();
- xeRenderSystem.loadPushConstant(&pc);
- xeRenderSystem.render(obj);
+ xeRenderSystem->loadPushConstant(&pc);
+ xeRenderSystem->render(obj);
}
- xeRenderSystem.stop();
+ xeRenderSystem->stop();
}
diff --git a/src/simple_renderer.hpp b/src/simple_renderer.hpp
index 20e3997..d9be7b2 100644
--- a/src/simple_renderer.hpp
+++ b/src/simple_renderer.hpp
@@ -29,7 +29,7 @@ class SimpleRenderer {
void render(std::vector<xe::XeGameObject> &gameObjects, xe::XeCamera &xeCamera, xe::XeImage *xeImage);
private:
- xe::XeRenderSystem xeRenderSystem;
+ std::unique_ptr<xe::XeRenderSystem> xeRenderSystem;
};