From 873ca38c0dc8966cd54a18dd74d40c709d83eb32 Mon Sep 17 00:00:00 2001 From: Tyler Murphy Date: Mon, 26 Sep 2022 18:03:07 -0400 Subject: texture arrays --- src/chunk.cpp | 3 ++- src/first_app.cpp | 9 ++++++--- src/simple_renderer.cpp | 11 ++++++----- src/simple_renderer.hpp | 4 ++-- 4 files changed, 16 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/chunk.cpp b/src/chunk.cpp index aa9ff3b..a674527 100644 --- a/src/chunk.cpp +++ b/src/chunk.cpp @@ -75,7 +75,7 @@ std::shared_ptr Chunk::getMesh() { delete chunkMesh.get(); xe::Model::Builder builder{}; builder.vertexData = vertexData; - builder.vertexSize = 32; + builder.vertexSize = 36; chunkMesh = std::make_shared(xe::Engine::getInstance()->getDevice(), builder); } return chunkMesh; @@ -129,6 +129,7 @@ void Chunk::addVerticies(uint8_t side, int32_t x, int32_t y, int32_t z) { vertexData.push_back(nm[side][2]); vertexData.push_back(uv[i][0]); vertexData.push_back(uv[i][1]); + vertexData.push_back(0.f); } } diff --git a/src/first_app.cpp b/src/first_app.cpp index 561b693..04272ba 100755 --- a/src/first_app.cpp +++ b/src/first_app.cpp @@ -11,9 +11,12 @@ FirstApp::~FirstApp() {} void FirstApp::run() { - std::shared_ptr image = xeEngine.loadImageFromFile("res/image/dirt.jpg"); + std::shared_ptr dirt = xeEngine.loadImageFromFile("res/image/dirt.jpg"); + std::shared_ptr grass = xeEngine.loadImageFromFile("res/image/grass.png"); - SimpleRenderer renderer{xeEngine, image.get()}; + std::vector images = {dirt.get(), grass.get()}; + + SimpleRenderer renderer{xeEngine, images}; xe::Sound sound{"res/sound/when_the_world_ends.wav"}; sound.setLooping(true); @@ -32,7 +35,7 @@ void FirstApp::run() { xeEngine.getCamera().setViewYXZ(viewerObject.transform.translation, viewerObject.transform.rotation); if(xeEngine.beginFrame()) { - renderer.render(gameObjects, xeEngine.getCamera(), image.get()); + renderer.render(gameObjects, xeEngine.getCamera()); xeEngine.endFrame(); } diff --git a/src/simple_renderer.cpp b/src/simple_renderer.cpp index 3efa9b8..c68f2ab 100644 --- a/src/simple_renderer.cpp +++ b/src/simple_renderer.cpp @@ -2,22 +2,23 @@ namespace app { -SimpleRenderer::SimpleRenderer(xe::Engine &xeEngine, xe::Image *xeImage) { +SimpleRenderer::SimpleRenderer(xe::Engine &xeEngine, std::vector &images) { xeRenderSystem = xe::RenderSystem::Builder(xeEngine, "res/shaders/simple_shader.vert.spv", "res/shaders/simple_shader.frag.spv") .addVertexBinding(0, 3, 0) // position .addVertexBinding(1, 3, 12) // normal .addVertexBinding(2, 2, 24) // uvs - .setVertexSize(32) + .addVertexBinding(3, 1, 32) // texture + .setVertexSize(36) .addPushConstant(sizeof(PushConstant)) .addUniformBinding(0, sizeof(UniformBuffer)) - .addTextureBinding(1, xeImage) + .addTextureArrayBinding(1, images) .setCulling(true) .build(); } -void SimpleRenderer::render(std::vector &gameObjects, xe::Camera &xeCamera, xe::Image *xeImage) { +void SimpleRenderer::render(std::vector &gameObjects, xe::Camera &xeCamera) { - xeRenderSystem->loadTexture(1, xeImage); + // xeRenderSystem->loadTexture(1, xeImage); xeRenderSystem->start(); diff --git a/src/simple_renderer.hpp b/src/simple_renderer.hpp index 7c08001..4db1446 100644 --- a/src/simple_renderer.hpp +++ b/src/simple_renderer.hpp @@ -20,14 +20,14 @@ class SimpleRenderer { public: - SimpleRenderer(xe::Engine &xeEngine, xe::Image *xeImage); + SimpleRenderer(xe::Engine &xeEngine, std::vector &images); ~SimpleRenderer() {}; SimpleRenderer(const SimpleRenderer&) = delete; SimpleRenderer operator=(const SimpleRenderer&) = delete; - void render(std::vector &gameObjects, xe::Camera &xeCamera, xe::Image *xeImage); + void render(std::vector &gameObjects, xe::Camera &xeCamera); private: std::unique_ptr xeRenderSystem; -- cgit v1.2.3-freya