summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-xsrc/first_app.cpp11
-rw-r--r--src/simple_renderer.cpp13
-rw-r--r--src/simple_renderer.hpp4
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;