From 3cf8ef62bfc72b41a0d2e8ebd109ca51569036e9 Mon Sep 17 00:00:00 2001 From: JimmyBinoculars Date: Fri, 20 Feb 2026 10:24:33 +0000 Subject: [PATCH] More shader related stuff --- a.out | Bin 17984 -> 71808 bytes cve_window.cpp | 8 ++++++++ cve_window.hpp | 2 ++ first_app.hpp | 3 +++ 4 files changed, 13 insertions(+) diff --git a/a.out b/a.out index 0af150c121a4f8c0de1edc0a6b860dfc36c445ad..7b85d9fc5498df369f2aeb4e0bc51435af347a52 100755 GIT binary patch literal 71808 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 OpQqLvFSjY!Sn+?MC}M;F diff --git a/cve_window.cpp b/cve_window.cpp index 5b2d6cd..f0d1c62 100644 --- a/cve_window.cpp +++ b/cve_window.cpp @@ -1,5 +1,7 @@ #include "cve_window.hpp" +#include + namespace cve { CveWindow::CveWindow(int w, int h, std::string name) : width{w}, height{h}, windowName{name} { @@ -19,4 +21,10 @@ namespace cve { window = glfwCreateWindow(width, height, windowName.c_str(), nullptr, nullptr); } + + void CveWindow::createWindowSurface(VkInstance instance, VkSurfaceKHR *surface) { + if (glfwCreateWindowSurface(instance, window, nullptr, surface) != VK_SUCCESS) { + throw std::runtime_error("Failed to create window surface"); + } + } } diff --git a/cve_window.hpp b/cve_window.hpp index f522ea2..75afcff 100644 --- a/cve_window.hpp +++ b/cve_window.hpp @@ -15,6 +15,8 @@ class CveWindow { CveWindow &operator=(const CveWindow &) = delete; bool shouldClose() { return glfwWindowShouldClose(window); }; + + void createWindowSurface(VkInstance instance, VkSurfaceKHR *surface); private: void initWindow(); diff --git a/first_app.hpp b/first_app.hpp index e4bab1b..8c14bab 100644 --- a/first_app.hpp +++ b/first_app.hpp @@ -1,6 +1,7 @@ #pragma once #include "cve_window.hpp" +#include "cve_pipeline.hpp" namespace cve { class FirstApp { @@ -11,5 +12,7 @@ namespace cve { void run(); private: CveWindow cveWindow{WIDTH, HEIGHT, "Hello Vulkan!"}; + CvePipeline cvePipeline{"shaders/simple_shader.vert.spv", + "shaders/simple_shader.frag.spv"}; }; }