From 107f3ce87a13353562ae109a650a3dd08722ce53 Mon Sep 17 00:00:00 2001 From: Linloir <3145078758@qq.com> Date: Tue, 13 Dec 2022 10:04:25 +0800 Subject: [PATCH] Add extra checks when dispose and ensureInitialized --- FinalProject/sceneviewer.cpp | 2 +- FinalProject/shader.h | 4 ++++ FinalProject/vao.h | 1 + 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/FinalProject/sceneviewer.cpp b/FinalProject/sceneviewer.cpp index 7542a81..b809aa4 100644 --- a/FinalProject/sceneviewer.cpp +++ b/FinalProject/sceneviewer.cpp @@ -72,7 +72,7 @@ void SceneViewer::initializeGL() { } void SceneViewer::resizeGL(int w, int h) { - + glViewport(0, 0, w, h); } void SceneViewer::paintGL() { diff --git a/FinalProject/shader.h b/FinalProject/shader.h index ed6fa69..dff363d 100644 --- a/FinalProject/shader.h +++ b/FinalProject/shader.h @@ -103,6 +103,7 @@ inline void ShaderProgram::unbind() const { } inline void ShaderProgram::dispose() { + if (_programId == 0) return; OPENGL_EXTRA_FUNCTIONS->glDeleteProgram(_programId); _programId = 0; } @@ -110,5 +111,8 @@ inline void ShaderProgram::dispose() { inline void ShaderProgram::ensureInitialized() { if (_programId == 0) { _programId = OPENGL_EXTRA_FUNCTIONS->glCreateProgram(); + if (_programId == 0) { + Logger::error("Failed to create a ShaderProgram"); + } } } diff --git a/FinalProject/vao.h b/FinalProject/vao.h index 33d19e3..adf93f1 100644 --- a/FinalProject/vao.h +++ b/FinalProject/vao.h @@ -52,6 +52,7 @@ inline void VertexArrayObject::unbind() const { } inline void VertexArrayObject::dispose() { + if (_id == 0) return; OPENGL_EXTRA_FUNCTIONS->glDeleteVertexArrays(1, &_id); _id = 0; }