From 0398903585fe0839fb7af19dc3c8084b713cb2e1 Mon Sep 17 00:00:00 2001 From: Attila Uygun Date: Tue, 4 Jul 2023 22:41:57 +0200 Subject: [PATCH] Fix for opengl renderer --- src/engine/renderer/opengl/renderer_opengl.cc | 24 +++++++------------ .../opengl/renderer_opengl_android.cc | 4 +++- .../renderer/opengl/renderer_opengl_linux.cc | 4 +++- 3 files changed, 15 insertions(+), 17 deletions(-) diff --git a/src/engine/renderer/opengl/renderer_opengl.cc b/src/engine/renderer/opengl/renderer_opengl.cc index 19ae60e..28ab569 100644 --- a/src/engine/renderer/opengl/renderer_opengl.cc +++ b/src/engine/renderer/opengl/renderer_opengl.cc @@ -40,12 +40,6 @@ RendererOpenGL::~RendererOpenGL() { OnDestroy(); } -void RendererOpenGL::Shutdown() { - LOG(0) << "Shutting down renderer."; - is_initialized_ = false; - ShutdownInternal(); -} - void RendererOpenGL::OnWindowResized(int width, int height) { screen_width_ = width; screen_height_ = height; @@ -68,15 +62,6 @@ uint64_t RendererOpenGL::CreateGeometry(std::unique_ptr mesh) { return 0; } - // Make sure the vertex format is understood and the attribute pointers are - // set up. - std::vector vertex_layout; - if (!SetupVertexLayout(mesh->vertex_description(), vertex_size, - vertex_array_objects_, vertex_layout)) { - LOG(0) << "Invalid vertex layout"; - return 0; - } - GLuint vertex_array_id = 0; if (vertex_array_objects_) { glGenVertexArrays(1, &vertex_array_id); @@ -90,6 +75,15 @@ uint64_t RendererOpenGL::CreateGeometry(std::unique_ptr mesh) { glBufferData(GL_ARRAY_BUFFER, mesh->num_vertices() * vertex_size, mesh->GetVertices(), GL_STATIC_DRAW); + // Make sure the vertex format is understood and the attribute pointers are + // set up. + std::vector vertex_layout; + if (!SetupVertexLayout(mesh->vertex_description(), vertex_size, + vertex_array_objects_, vertex_layout)) { + LOG(0) << "Invalid vertex layout"; + return 0; + } + // Create the index buffer and upload the data. GLuint index_buffer_id = 0; if (mesh->GetIndices()) { diff --git a/src/engine/renderer/opengl/renderer_opengl_android.cc b/src/engine/renderer/opengl/renderer_opengl_android.cc index 24fcc28..7428630 100644 --- a/src/engine/renderer/opengl/renderer_opengl_android.cc +++ b/src/engine/renderer/opengl/renderer_opengl_android.cc @@ -44,7 +44,9 @@ void RendererOpenGL::OnDestroy() { ndk_helper::GLContext::GetInstance()->Invalidate(); } -void RendererOpenGL::ShutdownInternal() { +void RendererOpenGL::Shutdown() { + LOG(0) << "Shutting down renderer."; + is_initialized_ = false; ndk_helper::GLContext::GetInstance()->Suspend(); } diff --git a/src/engine/renderer/opengl/renderer_opengl_linux.cc b/src/engine/renderer/opengl/renderer_opengl_linux.cc index c1c6d4e..9ab2229 100644 --- a/src/engine/renderer/opengl/renderer_opengl_linux.cc +++ b/src/engine/renderer/opengl/renderer_opengl_linux.cc @@ -36,7 +36,9 @@ bool RendererOpenGL::Initialize(Platform* platform) { void RendererOpenGL::OnDestroy() {} -void RendererOpenGL::ShutdownInternal() { +void RendererOpenGL::Shutdown() { + LOG(0) << "Shutting down renderer."; + is_initialized_ = false; if (display_ && glx_context_) { glXMakeCurrent(display_, None, NULL); glXDestroyContext(display_, glx_context_);