2 (asdf:oos
'asdf
:load-op
'#:cl-glfw
)
6 (when (glfw:open-window
640 480 0 0 0 0 0 0 glfw
:+window
+)
7 (glfw:enable glfw
:+sticky-keys
+)
10 (do ((running t
(and (zerop (glfw:get-key glfw
:+key-esc
+))
11 (not (zerop (glfw:get-window-param glfw
:+opened
+)))))
14 (t1 (glfw:get-time
) (glfw:get-time
)))
16 (when (or (> (- t1 t0
) 1.0)
18 (glfw:set-window-title
(format nil
"Spinning Triangle (~,1f FPS)" (/ frames
(- t1 t0
))))
24 (destructuring-bind (width height
) (glfw:get-window-size
)
25 (setf height
(max height
1))
26 (gl:viewport
0 0 width height
)
28 (gl:clear-color
0.0 0.0 0.0 0.0)
29 (gl:clear gl
:+color-buffer-bit
+)
31 (gl:matrix-mode gl
:+projection
+)
33 (glu:perspective
65.0d0
(coerce (/ width height
) 'double-float
) 1.0d0
100.0d0
)
34 (gl:matrix-mode gl
:+modelview
+)
36 (glu:look-at
0.0d0
1.0d0
0.0d0
40 (gl:translate-f
0.0 14.0 0.0)
43 (destructuring-bind (x y
) (glfw:get-mouse-pos
)
45 (gl:rotate-f
(coerce (+ (* x
0.3)
50 (gl:begin gl
:+triangles
+)
51 (gl:color-3f
1.0 0.0 0.0) (gl:vertex-3f -
5.0 0.0 -
4.0)
52 (gl:color-3f
0.0 1.0 0.0) (gl:vertex-3f
5.0 0.0 -
4.0)
53 (gl:color-3f
0.0 0.0 1.0) (gl:vertex-3f
0.0 0.0 6.0)
55 (glfw:swap-buffers
))))