From 7a8f3117ed3099daa8743c6160c7d5e3ad61646e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Renaud=20Casenave-P=C3=A9r=C3=A9?= Date: Sun, 3 May 2015 23:35:40 +0200 Subject: [PATCH] Add a way to check if opengl is initialized or not --- src/render/gl-utils.lisp | 30 ++++++++++++++++++++---------- src/render/render.lisp | 3 ++- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/src/render/gl-utils.lisp b/src/render/gl-utils.lisp index 12ccfdd..aa4f6d4 100644 --- a/src/render/gl-utils.lisp +++ b/src/render/gl-utils.lisp @@ -10,7 +10,9 @@ (:export :*major-version* :*minor-version* :*glsl-version* + :gl-initialized-p :initialize + :finalize :version-supported-p :gl-assert :gl-restart @@ -21,17 +23,25 @@ (defvar *minor-version* nil) (defvar *glsl-version* nil) -(defun initialize (version) - "Initialize the local opengl configuration. +(let ((initializedp)) + (defun gl-initialized-p () + initializedp) + + (defun initialize (version) + "Initialize the local opengl configuration. Store values like the drivers version." - (if (/= version 0) - (multiple-value-bind (maj min) (floor version 10) - (setf *major-version* maj - *minor-version* min)) - (setf *major-version* (gl:get-integer :major-version) - *minor-version* (gl:get-integer :minor-version))) - (setf *glsl-version* (with-input-from-string (in (gl:get-string :shading-language-version)) - (read in)))) + (if (/= version 0) + (multiple-value-bind (maj min) (floor version 10) + (setf *major-version* maj + *minor-version* min)) + (setf *major-version* (gl:get-integer :major-version) + *minor-version* (gl:get-integer :minor-version))) + (setf *glsl-version* (with-input-from-string (in (gl:get-string :shading-language-version)) + (read in))) + (setf initializedp t)) + + (defun finalize () + (setf initializedp nil))) (defun version-supported-p (version) (multiple-value-bind (maj min) (floor version 10) diff --git a/src/render/render.lisp b/src/render/render.lisp index 8c36423..c681804 100644 --- a/src/render/render.lisp +++ b/src/render/render.lisp @@ -58,7 +58,8 @@ Destroy the opengl context and the related resources." (format t "Finalize Render module~%") (shader:destroy-all-shaders) (glop:destroy-window *window*) - (setf *window* nil)) + (setf *window* nil) + (gl-utils:finalize)) (defun update (delta-time) "Update the render module.