Skip to content
Snippets Groups Projects
Commit ee64a065 authored by n0F4x's avatar n0F4x
Browse files

Refactor GLFW initialization

parent e771735a
No related branches found
No related tags found
No related merge requests found
...@@ -3,21 +3,35 @@ ...@@ -3,21 +3,35 @@
#include <format> #include <format>
#include <stdexcept> #include <stdexcept>
[[nodiscard]] static auto init_glfw() -> void
static auto
create_window(const uint16_t width, const uint16_t height, const std::string& title)
-> GLFWwindow*
{ {
if (const auto error_code{ glfwInit() }; error_code != GLFW_TRUE) { if (const int success{ glfwInit() }; success != GLFW_TRUE) {
const char* description{};
const int error_code{ glfwGetError(&description) };
if (description == nullptr) {
throw std::runtime_error{ throw std::runtime_error{
std::format("glfwInit failed with error code {}", error_code) std::format("glfwInit failed with error code {}", error_code)
}; };
} }
if (const auto result{ std::atexit(glfwTerminate) }; result != 0) { throw std::runtime_error{ std::format(
"glfwInit failed with error code {} - '{}'", error_code, description
) };
}
if (const int result{ std::atexit(glfwTerminate) }; result != 0) {
throw std::runtime_error{ throw std::runtime_error{
std::format("std::atexit(glfwTerminate) failed with error code {}", result) std::format("std::atexit failed with error code {}", result)
}; };
} }
}
[[nodiscard]]
static auto
create_window(const uint16_t width, const uint16_t height, const std::string& title)
-> GLFWwindow*
{
init_glfw();
glfwDefaultWindowHints(); glfwDefaultWindowHints();
glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API); glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API);
...@@ -34,9 +48,7 @@ static auto ...@@ -34,9 +48,7 @@ static auto
auto Window::vulkan_instance_extensions() -> std::span<const char* const> auto Window::vulkan_instance_extensions() -> std::span<const char* const>
{ {
static const std::vector s_extension_names{ []() -> std::vector<const char*> { static const std::vector s_extension_names{ []() -> std::vector<const char*> {
if (glfwInit() != GLFW_TRUE) { init_glfw();
return {};
}
uint32_t count{}; uint32_t count{};
const char** glfw_extension_names{ glfwGetRequiredInstanceExtensions(&count) }; const char** glfw_extension_names{ glfwGetRequiredInstanceExtensions(&count) };
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment