1 (defpackage #:cl-glfw-opengl-extensions
4 (:export
#:scan-available-extensions
#:available-extensions
#:extension-available-p
#:load-extension
))
8 (declaim (optimize (debug 3) (speed 0) (space 0)))
10 (defparameter *available
* nil
)
12 (defun scan-available-extensions ()
14 (let ((extensions-string (gl:get-string gl
:+extensions
+)))
15 (when (and extensions-string
16 (stringp extensions-string
)
17 (plusp (length extensions-string
)))
18 (loop for i
= 0 then
(1+ j
)
19 as j
= (position #\Space extensions-string
:start i
)
20 while
(< i
(length extensions-string
))
21 collect
(subseq extensions-string
(+ i
3) j
)
24 (defun available-extensions ()
25 (or *available
* (scan-available-extensions)))
27 (defun extension-available-p (extension)
28 (declare (type string extension
))
29 (find extension
(available-extensions) :test
'equalp
))