Fix for callbacks under windows from Andrew Lyon.
[cl-glfw.git] / examples / synchronized-shader.lisp
blob5b7590e48a1f9490eff8afa9022f45d20f422122
1 (require '#:asdf)
2 (asdf:oos 'asdf:load-op '#:cl-glfw)
3 (asdf:oos 'asdf:load-op '#:cl-glfw-opengl-version_2_0)
4 (asdf:oos 'asdf:load-op '#:cl-glfw-glu)
6 (declaim (optimize (debug 3)))
8 ;; This example uses the gl:synchronizing-program mechanism to reload+recompile+relink shader files on-file-change
10 (glfw:do-window (:title "An OpenGL 2.0 Synchronized Shader Example")
11 ((gl:with-setup-projection
12 (glu:perspective 45 4/3 0.1 50)))
13 (gl:clear gl:+color-buffer-bit+)
14 (gl:load-identity)
15 (gl:translate-f 0 0 -5)
16 (gl:rotate-d (* 10 (glfw:get-time)) 1 1 0)
17 (gl:rotate-d (* 90 (glfw:get-time)) 0 0 1)
18 (let ((program (gl:synchronizing-program 'synchronized-shader
19 (list gl:+vertex-shader+ (merge-pathnames "synchronized-shader.vert" *load-truename*))
20 (list gl:+fragment-shader+ (merge-pathnames "synchronized-shader.frag" *load-truename*)))))
21 (gl:with-use-program program
22 (gl:uniform-1f (gl:get-uniform-location program "time") (glfw:get-time))
23 (gl:with-begin gl:+triangles+
24 (gl:color-3f 1 0 0) (gl:vertex-3f 1 0 0)
25 (gl:color-3f 0 1 0) (gl:vertex-3f -1 1 0)
26 (gl:color-3f 0 0 1) (gl:vertex-3f -1 -1 0)))))