From 249f6c9fa384e9e3265cafb1357e502ea7db72f7 Mon Sep 17 00:00:00 2001 From: tylermurphy534 Date: Tue, 20 Sep 2022 22:02:58 -0400 Subject: texture loading --- src/first_app.cpp | 11 +++++++++-- src/simple_renderer.cpp | 13 ++++++++----- src/simple_renderer.hpp | 4 ++-- 3 files changed, 19 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/first_app.cpp b/src/first_app.cpp index cff92db..40a5681 100755 --- a/src/first_app.cpp +++ b/src/first_app.cpp @@ -14,6 +14,8 @@ #include #include +#include + namespace app { FirstApp::FirstApp() : xeEngine{WIDTH, HEIGHT, "Hello, Vulkan!"} { @@ -24,7 +26,12 @@ FirstApp::~FirstApp() {} void FirstApp::run() { - SimpleRenderer renderer{xeEngine}; + const std::string s = "res/image/texture.png"; + + std::shared_ptr image = xeEngine.loadImage("res/image/texture.png"); + std::shared_ptr image2 = xeEngine.loadImage("res/image/scaly.png"); + + SimpleRenderer renderer{xeEngine, image.get()}; auto viewerObject = xe::XeGameObject::createGameObject(); viewerObject.transform.translation = {-7.f, 3.f, -7.f}; @@ -39,7 +46,7 @@ void FirstApp::run() { xeEngine.getCamera().setViewYXZ(viewerObject.transform.translation, viewerObject.transform.rotation); if(xeEngine.beginFrame()) { - renderer.render(gameObjects, xeEngine.getCamera()); + renderer.render(gameObjects, xeEngine.getCamera(), image2.get()); xeEngine.endFrame(); } } diff --git a/src/simple_renderer.cpp b/src/simple_renderer.cpp index b4c115a..548b77d 100644 --- a/src/simple_renderer.cpp +++ b/src/simple_renderer.cpp @@ -2,20 +2,23 @@ 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)} {}; +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} {}; -void SimpleRenderer::render(std::vector &gameObjects, xe::XeCamera &xeCamera) { +void SimpleRenderer::render(std::vector &gameObjects, xe::XeCamera &xeCamera, xe::XeImage *xeImage) { + + xeRenderSystem.start(); UniformBuffer ubo{}; ubo.projectionView = xeCamera.getProjection() * xeCamera.getView(); - xeRenderSystem.loadUniformObject(&ubo, sizeof(ubo)); + xeRenderSystem.loadUniformObject(&ubo); + xeRenderSystem.loadTexture(xeImage); for(auto &obj : gameObjects) { PushConstant pc{}; pc.modelMatrix = obj.transform.mat4(); pc.normalMatrix = obj.transform.normalMatrix(); - xeRenderSystem.loadPushConstant(&pc, sizeof(pc)); + xeRenderSystem.loadPushConstant(&pc); xeRenderSystem.render(obj); } diff --git a/src/simple_renderer.hpp b/src/simple_renderer.hpp index 22ba0b4..20e3997 100644 --- a/src/simple_renderer.hpp +++ b/src/simple_renderer.hpp @@ -19,14 +19,14 @@ class SimpleRenderer { public: - SimpleRenderer(xe::XeEngine &xeEngine); + SimpleRenderer(xe::XeEngine &xeEngine, xe::XeImage *xeImage); ~SimpleRenderer() {}; SimpleRenderer(const SimpleRenderer&) = delete; SimpleRenderer operator=(const SimpleRenderer&) = delete; - void render(std::vector &gameObjects, xe::XeCamera &xeCamera); + void render(std::vector &gameObjects, xe::XeCamera &xeCamera, xe::XeImage *xeImage); private: xe::XeRenderSystem xeRenderSystem; -- cgit v1.2.3-freya