From 76bae46dbc167838531eaae85b0d41aab5e0741f Mon Sep 17 00:00:00 2001 From: Tyler Murphy Date: Wed, 21 Sep 2022 12:36:12 -0400 Subject: self define descriptors --- src/simple_renderer.cpp | 24 ++++++++++++++++-------- src/simple_renderer.hpp | 2 +- 2 files changed, 17 insertions(+), 9 deletions(-) (limited to 'src') 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 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 &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 &gameObjects, xe::XeCamera &xeCamera, xe::XeImage *xeImage); private: - xe::XeRenderSystem xeRenderSystem; + std::unique_ptr xeRenderSystem; }; -- cgit v1.2.3-freya