Add extra checks when dispose and ensureInitialized

This commit is contained in:
Linloir 2022-12-13 10:04:25 +08:00
parent b5e5b4cfa9
commit 107f3ce87a
No known key found for this signature in database
GPG Key ID: 58EEB209A0F2C366
3 changed files with 6 additions and 1 deletions

View File

@ -72,7 +72,7 @@ void SceneViewer::initializeGL() {
} }
void SceneViewer::resizeGL(int w, int h) { void SceneViewer::resizeGL(int w, int h) {
glViewport(0, 0, w, h);
} }
void SceneViewer::paintGL() { void SceneViewer::paintGL() {

View File

@ -103,6 +103,7 @@ inline void ShaderProgram::unbind() const {
} }
inline void ShaderProgram::dispose() { inline void ShaderProgram::dispose() {
if (_programId == 0) return;
OPENGL_EXTRA_FUNCTIONS->glDeleteProgram(_programId); OPENGL_EXTRA_FUNCTIONS->glDeleteProgram(_programId);
_programId = 0; _programId = 0;
} }
@ -110,5 +111,8 @@ inline void ShaderProgram::dispose() {
inline void ShaderProgram::ensureInitialized() { inline void ShaderProgram::ensureInitialized() {
if (_programId == 0) { if (_programId == 0) {
_programId = OPENGL_EXTRA_FUNCTIONS->glCreateProgram(); _programId = OPENGL_EXTRA_FUNCTIONS->glCreateProgram();
if (_programId == 0) {
Logger::error("Failed to create a ShaderProgram");
}
} }
} }

View File

@ -52,6 +52,7 @@ inline void VertexArrayObject::unbind() const {
} }
inline void VertexArrayObject::dispose() { inline void VertexArrayObject::dispose() {
if (_id == 0) return;
OPENGL_EXTRA_FUNCTIONS->glDeleteVertexArrays(1, &_id); OPENGL_EXTRA_FUNCTIONS->glDeleteVertexArrays(1, &_id);
_id = 0; _id = 0;
} }