From 977b8f16d7ef43101b6ef588f9610f34285fa7e6 Mon Sep 17 00:00:00 2001 From: Yann Herklotz Date: Wed, 20 Sep 2017 23:01:12 +0100 Subject: Replacing SDL by glfw --- yage/base/imageloader.cpp | 7 ++---- yage/base/sprite.cpp | 2 -- yage/base/sprite.h | 2 +- yage/base/window.cpp | 55 +++++++++++------------------------------------ yage/base/window.h | 9 +++++--- 5 files changed, 21 insertions(+), 54 deletions(-) (limited to 'yage/base') diff --git a/yage/base/imageloader.cpp b/yage/base/imageloader.cpp index 983c350e..0d7d5df9 100644 --- a/yage/base/imageloader.cpp +++ b/yage/base/imageloader.cpp @@ -17,8 +17,6 @@ namespace yage Texture ImageLoader::loadPng(const std::string &file_path) { - Texture texture = {}; - std::vector in; std::vector out; unsigned long width, height; @@ -35,6 +33,8 @@ Texture ImageLoader::loadPng(const std::string &file_path) std::to_string(error_code)); } + Texture texture{0, (int)width, (int)height}; + glGenTextures(1, &texture.id); glBindTexture(GL_TEXTURE_2D, texture.id); @@ -51,9 +51,6 @@ Texture ImageLoader::loadPng(const std::string &file_path) glBindTexture(GL_TEXTURE_2D, 0); - texture.width = (int)width; - texture.height = (int)height; - return texture; } diff --git a/yage/base/sprite.cpp b/yage/base/sprite.cpp index 767e1000..9ac4dc55 100644 --- a/yage/base/sprite.cpp +++ b/yage/base/sprite.cpp @@ -15,8 +15,6 @@ namespace yage { -Sprite::Sprite() = default; - Sprite::~Sprite() { if (vbo_id_ != 0) { diff --git a/yage/base/sprite.h b/yage/base/sprite.h index 5b9baf91..ff893b53 100644 --- a/yage/base/sprite.h +++ b/yage/base/sprite.h @@ -34,7 +34,7 @@ private: Texture texture_; public: - Sprite(); + Sprite() = default; Sprite(const Sprite &) = delete; Sprite(Sprite &&) = delete; ~Sprite(); diff --git a/yage/base/window.cpp b/yage/base/window.cpp index a8b6fc02..67f32bb2 100644 --- a/yage/base/window.cpp +++ b/yage/base/window.cpp @@ -6,8 +6,7 @@ * ---------------------------------------------------------------------------- */ -#include -#include +#include "window.h" #include #include @@ -19,60 +18,30 @@ Window::Window() = default; Window::~Window() { - SDL_DestroyWindow(window_); + glfwDestroyWindow(window_); } void Window::create(const std::string &window_name, int width, int height, unsigned flags) { - Uint32 gl_window_states = 0; + glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4); + glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0); - // set the correct input flags - if (flags & WindowFlags::SHOWN) { - gl_window_states |= SDL_WINDOW_OPENGL; - } - if (flags & WindowFlags::HIDDEN) { - gl_window_states |= SDL_WINDOW_HIDDEN; - } - if (flags & WindowFlags::FULLSCREEN) { - gl_window_states |= SDL_WINDOW_FULLSCREEN; - } - if (flags & WindowFlags::BORDERLESS) { - gl_window_states |= SDL_WINDOW_BORDERLESS; - } - - // SDL_GL options - - // SDL_GL_SetAttribute (SDL_GL_CONTEXT_MAJOR_VERSION, 4); - // SDL_GL_SetAttribute (SDL_GL_CONTEXT_MINOR_VERSION, 5); - SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); - - // create the SDL window - window_ = SDL_CreateWindow(window_name.c_str(), SDL_WINDOWPOS_CENTERED, - SDL_WINDOWPOS_CENTERED, width, height, - gl_window_states); + window_ = glfwCreateWindow(width, height, window_name.c_str(), nullptr, nullptr); if (window_ == nullptr) { - throw std::runtime_error("SDL_CreateWindow failed"); + throw std::runtime_error("GLFW Window creation failed"); } - // initialize the GL context in the window - SDL_GLContext gl_context = SDL_GL_CreateContext(window_); - if (gl_context == nullptr) { - throw std::runtime_error("SDL_GL_CreateContext failed"); - } - - // initialize glew - GLenum error = glewInit(); - if (error != GLEW_OK) { - throw std::runtime_error("glewInit failed"); - } + // initialize the gl context + glfwMakeContextCurrent(window_); // print out the current OpenGL version to debug std::cout << "*** OpenGL version: " << glGetString(GL_VERSION) << " ***\n"; - // set vsync on instead of custom fps limiting - SDL_GL_SetSwapInterval(1); + // set vsync on + glfwSwapInterval(1); + // set the clear color to black glClearColor(0.f, 0.5f, 0.f, 1.f); // set alpha blending @@ -83,7 +52,7 @@ void Window::create(const std::string &window_name, int width, int height, void Window::swapBuffer() { // swap the window buffer - SDL_GL_SwapWindow(window_); + glfwSwapBuffers(window_); } void Window::clearBuffer() diff --git a/yage/base/window.h b/yage/base/window.h index 8639e075..eb4cf005 100644 --- a/yage/base/window.h +++ b/yage/base/window.h @@ -6,10 +6,13 @@ * ---------------------------------------------------------------------------- */ +/** @file + */ + #ifndef WINDOW_H #define WINDOW_H -#include +#include #include @@ -24,12 +27,12 @@ enum WindowFlags : unsigned { BORDERLESS = 0x8, }; -// window wrapper around SDL_Window pointer +// window wrapper around GLFWwindow pointer class Window { private: /// window handle - SDL_Window *window_ = nullptr; + GLFWwindow *window_ = nullptr; public: Window(); -- cgit