Fix gl version retrieval and get glsl version at init

This commit is contained in:
Renaud Casenave-Péré 2015-04-04 23:32:34 +02:00
parent 1c1862dd6d
commit 5cc428df88

View file

@ -9,6 +9,7 @@
(:use :cl) (:use :cl)
(:export :*major-version* (:export :*major-version*
:*minor-version* :*minor-version*
:*glsl-version*
:initialize :initialize
:version-supported-p :version-supported-p
:gl-assert :gl-assert
@ -18,21 +19,23 @@
(defvar *major-version* nil) (defvar *major-version* nil)
(defvar *minor-version* nil) (defvar *minor-version* nil)
(defvar *glsl-version* nil)
(defun initialize (version) (defun initialize (version)
"Initialize the local opengl configuration. "Initialize the local opengl configuration.
Store values like the drivers version." Store values like the drivers version."
(if (/= version 0) (if (/= version 0)
(progn (multiple-value-bind (maj min) (floor version 10)
(setf *major-version* (mod version 100)) (setf *major-version* maj
(setf *minor-version* (/ version 100))) *minor-version* min))
(progn (setf *major-version* (gl:get-integer :major-version)
(setf *major-version* (gl:get-integer :major-version)) *minor-version* (gl:get-integer :minor-version)))
(setf *minor-version* (gl:get-integer :minor-version))))) (setf *glsl-version* (gl:get-string :shading-language-version)))
(defun version-supported-p (version) (defun version-supported-p (version)
(and (>= (mod version 100) *major-version*) (multiple-value-bind (maj min) (floor version 10)
(>= (/ version 100) *minor-version*))) (and (<= maj *major-version*)
(<= min *minor-version*))))
(defmacro gl-assert (form) (defmacro gl-assert (form)
`(prog1 `(prog1