From b03bcd75ebc59bc7e445ed95b64be4ba9f025934 Mon Sep 17 00:00:00 2001 From: Joseph Walton-Rivers <joseph@walton-rivers.uk> Date: Sun, 18 Jul 2021 12:04:55 +0100 Subject: [PATCH] ensure that viewport matches framebuffer size --- demo/main.cpp | 10 +++++----- fggl/gfx/window.cpp | 10 ++++++++++ 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/demo/main.cpp b/demo/main.cpp index f38b2c1..fa91b2e 100644 --- a/demo/main.cpp +++ b/demo/main.cpp @@ -82,8 +82,8 @@ int main(int argc, char* argv[]) { ecs.registerComponent<fggl::gfx::MeshToken>(); ecs.registerComponent<fggl::math::Transform>(); - int nCubes = 1; - int nSections = 3; + int nCubes = 3; + int nSections = 2; constexpr float HALF_PI = M_PI / 2.0f; @@ -92,7 +92,7 @@ int main(int argc, char* argv[]) { // set the position auto result = ecs.addComponent<fggl::math::Transform>(entity); - result->origin( glm::vec3( 0.0f, 0.0f, i * -1.0f) ); + result->origin( glm::vec3( i * 5.0f, 0.0f, 0.0f) ); fggl::data::Mesh mesh; for (int i=-(nSections/2); i<=nSections/2; i++) { @@ -123,12 +123,12 @@ int main(int argc, char* argv[]) { // update step time += dt; - float amount = glm::radians( time / 2048.0f * 360.0f ); +/* float amount = glm::radians( time / 2048.0f * 360.0f ); auto spinners = ecs.getEntityWith<fggl::math::Transform>(); for ( auto entity : spinners ) { auto transform = ecs.getComponent<fggl::math::Transform>(entity); transform->euler(glm::vec3(0.0f, amount, 0.0f)); - } + }*/ // render step ogl.clear(); diff --git a/fggl/gfx/window.cpp b/fggl/gfx/window.cpp index 0b94278..044f1d9 100644 --- a/fggl/gfx/window.cpp +++ b/fggl/gfx/window.cpp @@ -13,6 +13,11 @@ static void glfw_error(int code, const char* description) { std::cerr << "[GLFW] " << code << " " << description << std::endl; } +static void framebuffer_resize(GLFWwindow* window, int width, int height) { + glfwMakeContextCurrent( window ); + glViewport(0, 0, width, height); +} + Context::Context() { int state = glfwInit(); if ( state == GLFW_FALSE ) { @@ -37,7 +42,12 @@ Window::Window() : m_window(nullptr), m_input(nullptr) { glfwWindowHint(GLFW_OPENGL_DEBUG_CONTEXT, true); m_window = glfwCreateWindow(1920, 1080, "main", nullptr, nullptr); + if ( m_window == nullptr ) { + return; + } + glfwSetWindowUserPointer(m_window, this); + glfwSetFramebufferSizeCallback( m_window, framebuffer_resize ); } Window::~Window() { -- GitLab