summaryrefslogtreecommitdiff
path: root/2d/shader.scm
diff options
context:
space:
mode:
authorDavid Thompson <dthompson2@worcester.edu>2014-02-15 12:56:47 -0500
committerDavid Thompson <dthompson2@worcester.edu>2014-02-15 13:02:55 -0500
commitb346663c1d0b8ff6c96ac8e42c4c397e34f59378 (patch)
tree5a45342d3a6a10b346931f3827c899a6f9cd6c12 /2d/shader.scm
parent1658eca482f016844986daaa0ef9bdd07c8ce03a (diff)
Add 4x4 transformation matrix module.
* 2d/transform.scm: New module. * 2d/shader.scm: Add uniform setter for transforms. * Makefile.am (SOURCES): Add '2d/transform.scm'.
Diffstat (limited to '2d/shader.scm')
-rw-r--r--2d/shader.scm9
1 files changed, 9 insertions, 0 deletions
diff --git a/2d/shader.scm b/2d/shader.scm
index 86fc1e2..fb03439 100644
--- a/2d/shader.scm
+++ b/2d/shader.scm
@@ -8,6 +8,7 @@
#:use-module (figl gl)
#:use-module (figl gl low-level)
#:use-module (2d helpers)
+ #:use-module (2d transform)
#:use-module (2d vector2)
#:use-module (2d color)
#:export (make-shader
@@ -224,6 +225,14 @@ location."
;; vec4s.
(glUniform4f location (vx v) (vy v) 0 0)))
+(register-uniform-setter! transform?
+ (lambda (location t)
+ (let ((pointer
+ (bytevector->pointer
+ (array-contents (transform-matrix t)))))
+ (glUniformMatrix4fv location 1 #f
+ pointer))))
+
(register-uniform-setter! color?
(lambda (location c)
(glUniform4f location