Fix for callbacks under windows from Andrew Lyon.
[cl-glfw.git] / lib / opengl-extensions.lisp
blobfb2425598a773013380a8e9460615567d379904d
1 (defpackage #:cl-glfw-opengl-extensions
2 (:nicknames #:gl-ext)
3 (:use #:cl)
4 (:export #:scan-available-extensions #:available-extensions #:extension-available-p #:load-extension))
6 (in-package #:gl-ext)
8 (declaim (optimize (debug 3) (speed 0) (space 0)))
10 (defparameter *available* nil)
12 (defun scan-available-extensions ()
13 (setf *available*
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)
22 while 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))