diff options
Diffstat (limited to 'yage')
-rw-r--r-- | yage/CMakeLists.txt | 7 | ||||
-rw-r--r-- | yage/base/imageloader.cpp | 7 | ||||
-rw-r--r-- | yage/base/sprite.cpp | 2 | ||||
-rw-r--r-- | yage/base/sprite.h | 2 | ||||
-rw-r--r-- | yage/base/window.cpp | 55 | ||||
-rw-r--r-- | yage/base/window.h | 9 | ||||
-rw-r--r-- | yage/yage.cpp | 18 | ||||
-rw-r--r-- | yage/yage.h | 17 |
8 files changed, 46 insertions, 71 deletions
diff --git a/yage/CMakeLists.txt b/yage/CMakeLists.txt index 1de87757..e274fca5 100644 --- a/yage/CMakeLists.txt +++ b/yage/CMakeLists.txt @@ -23,10 +23,9 @@ add_library(${PROJECT_NAME} target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ${OPENGL_INCLUDE_DIR} - ${GLEW_INCLUDE_DIR} - ${SDL2_INCLUDE_DIR}) + ${GLEW_INCLUDE_DIR}) target_link_libraries(${PROJECT_NAME} - ${OPENGL_LIBRARIES} + ${OPENGL_gl_LIBRARY} ${GLEW_LIBRARIES} - ${SDL2_LIBRARIES}) + glfw) 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<unsigned char> in; std::vector<unsigned char> 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 <yage/base/window.h> -#include <GL/glew.h> +#include "window.h" #include <iostream> #include <stdexcept> @@ -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 <SDL2/SDL.h> +#include <GLFW/glfw3.h> #include <string> @@ -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(); diff --git a/yage/yage.cpp b/yage/yage.cpp index fa1e5c36..a141d9aa 100644 --- a/yage/yage.cpp +++ b/yage/yage.cpp @@ -8,17 +8,29 @@ #include "yage.h" +#include <GLFW/glfw3.h> + +#include <stdexcept> + namespace yage { -bool init() +void glfwErrorCallback(int, const char *description) +{ + fprintf(stderr, "ERROR: %s\n", description); +} + +void init() { - return SDL_Init(SDL_INIT_VIDEO); + glfwSetErrorCallback(glfwErrorCallback); + if (!glfwInit()) { + throw std::runtime_error("GLFW couldn't be initialised"); + } } void quit() { - SDL_Quit(); + glfwTerminate(); } } // namespace yage diff --git a/yage/yage.h b/yage/yage.h index f20aff06..4fce87dc 100644 --- a/yage/yage.h +++ b/yage/yage.h @@ -26,15 +26,10 @@ #include "base/vertex.h" #include "base/window.h" +#include "physics/body.h" +#include "physics/particlebody.h" #include "physics/rectanglecollider.h" #include "physics/rigidbody.h" -#include "physics/particlebody.h" -#include "physics/body.h" - - -#include <SDL2/SDL.h> - -#include <stdexcept> /** Project namespace. * @@ -44,17 +39,19 @@ namespace yage { +extern void glfwErrorCallback(int, const char *); + /** Initializes yage. * - * This is only there to initialize SDL2. + * This is only there to initialize glfw. * * @return Returns true if the initialization was successful. */ -extern bool init(); +extern void init(); /** Quit and cleanup yage * - * SDL2 needs to clean itself up. + * glfw needs to clean itself up. */ extern void quit(); |