diff options
Diffstat (limited to '')
-rwxr-xr-x | src/first_app.cpp | 11 | ||||
-rw-r--r-- | src/simple_renderer.cpp | 13 | ||||
-rw-r--r-- | src/simple_renderer.hpp | 4 |
3 files changed, 19 insertions, 9 deletions
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 <glm/gtc/constants.hpp> #include <array> +#include <string> + 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<xe::XeImage> image = xeEngine.loadImage("res/image/texture.png"); + std::shared_ptr<xe::XeImage> 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<xe::XeGameObject> &gameObjects, xe::XeCamera &xeCamera) { +void SimpleRenderer::render(std::vector<xe::XeGameObject> &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<xe::XeGameObject> &gameObjects, xe::XeCamera &xeCamera); + void render(std::vector<xe::XeGameObject> &gameObjects, xe::XeCamera &xeCamera, xe::XeImage *xeImage); private: xe::XeRenderSystem xeRenderSystem; |