From 04ca0d1d6927391be02c31ee371fa59ba634025f Mon Sep 17 00:00:00 2001
From: Pasha Bibko <156938226+PashaBibko@users.noreply.github.com>
Date: Sat, 15 Nov 2025 17:03:05 +0000
Subject: [PATCH] Initial commit
---
.gitattributes | 2 +
.idea/.gitignore | 8 ++
.idea/VulkanRenderer.iml | 2 +
.idea/editor.xml | 248 +++++++++++++++++++++++++++++++++++++++
.idea/misc.xml | 7 ++
.idea/modules.xml | 8 ++
CMakeLists.txt | 40 +++++++
main.cpp | 37 ++++++
8 files changed, 352 insertions(+)
create mode 100644 .gitattributes
create mode 100644 .idea/.gitignore
create mode 100644 .idea/VulkanRenderer.iml
create mode 100644 .idea/editor.xml
create mode 100644 .idea/misc.xml
create mode 100644 .idea/modules.xml
create mode 100644 CMakeLists.txt
create mode 100644 main.cpp
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..dfe0770
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,2 @@
+# Auto detect text files and perform LF normalization
+* text=auto
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..13566b8
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/VulkanRenderer.iml b/.idea/VulkanRenderer.iml
new file mode 100644
index 0000000..f08604b
--- /dev/null
+++ b/.idea/VulkanRenderer.iml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/.idea/editor.xml b/.idea/editor.xml
new file mode 100644
index 0000000..ead1d8a
--- /dev/null
+++ b/.idea/editor.xml
@@ -0,0 +1,248 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..0b76fe5
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..a116dfe
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..eb9cd20
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,40 @@
+# Sets minimum CMake and C++ Standard version #
+cmake_minimum_required (VERSION 4.0)
+
+set(CMAKE_CXX_STANDARD 20)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+set(CMAKE_CXX_EXTENSIONS OFF)
+
+project(VulkanRendererProject)
+include(FetchContent)
+
+# Adds Vulkan to the project #
+FetchContent_Declare(
+ VulkanHeaders
+ GIT_REPOSITORY https://github.com/KhronosGroup/Vulkan-Headers.git
+ GIT_TAG v1.3.296
+)
+
+FetchContent_MakeAvailable(VulkanHeaders)
+find_package(Vulkan REQUIRED)
+
+# Adds GLFW for window creation #
+FetchContent_Declare(
+ glfw
+ GIT_REPOSITORY https://github.com/glfw/glfw.git
+ GIT_TAG 3.4
+)
+
+FetchContent_MakeAvailable(glfw)
+
+# Creates the output binary
+project(VulkanRenderer LANGUAGES CXX)
+add_executable(VulkanRenderer
+ main.cpp
+)
+
+# Links the libraries to the binary #
+target_link_libraries(VulkanRenderer PRIVATE
+ Vulkan::Vulkan
+ glfw
+)
diff --git a/main.cpp b/main.cpp
new file mode 100644
index 0000000..0a32d62
--- /dev/null
+++ b/main.cpp
@@ -0,0 +1,37 @@
+#include
+#include
+
+#include
+
+int main()
+{
+ /* Initializes GLFW and creates window */
+ if (!glfwInit())
+ {
+ std::cout << "Failed to initialize GLFW" << std::endl;
+ return -1;
+ }
+
+ glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API);
+
+ const int WIDTH = 800;
+ const int HEIGHT = 600;
+
+ GLFWwindow* window = glfwCreateWindow(WIDTH, HEIGHT, "Vulkan Window", nullptr, nullptr);
+ if (!window)
+ {
+ std::cout << "Failed to create GLFW window" << std::endl;
+ glfwTerminate();
+ return -1;
+ }
+
+ /* Polls window events whilst it is still open */
+ while (!glfwWindowShouldClose(window))
+ {
+ glfwPollEvents();
+ }
+
+ /* Cleans up GLFW */
+ glfwDestroyWindow(window);
+ glfwTerminate();
+}
\ No newline at end of file