From e74f4e6d4ffcbf3923c597e75acbc5f0260516f8 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Thu, 22 May 2014 19:29:05 -0400 Subject: Add explicit vertex/fragment shader parameters to make-shader-program. * 2d/shader.scm (make-shader-program): Change parameter list. (vertex-shader?, fragment-shader?): New procedures. --- 2d/shader.scm | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) (limited to '2d') diff --git a/2d/shader.scm b/2d/shader.scm index 094b929..d8b165e 100644 --- a/2d/shader.scm +++ b/2d/shader.scm @@ -36,6 +36,8 @@ load-vertex-shader load-fragment-shader shader? + vertex-shader? + fragment-shader? shader-compiled? shader-type shader-id @@ -76,6 +78,14 @@ (type shader-type) (id shader-id)) +(define (vertex-shader? shader) + "Return #t if SHADER is a vertex shader, #f otherwise." + (eq? (shader-type shader) 'vertex)) + +(define (fragment-shader? shader) + "Return #t if SHADER is a fragment shader, #f otherwise." + (eq? (shader-type shader) 'fragment)) + (define-guardian shader-guardian (lambda (shader) (false-if-exception @@ -183,11 +193,16 @@ shaders or #f otherwise." (define (display-linking-error shader-program) (%display-linking-error (shader-program-id shader-program))) -(define (make-shader-program . shaders) +(define (make-shader-program vertex-shader fragment-shader) "Create a new shader program that has been linked with the given -SHADERS." +VERTEX-SHADER and FRAGMENT-SHADER." + (unless (and (vertex-shader? vertex-shader) + (fragment-shader? fragment-shader)) + (error "Expected a vertex shader and fragment shader" + vertex-shader fragment-shader)) (let* ((id (glCreateProgram)) - (shader-program (%make-shader-program id))) + (shader-program (%make-shader-program id)) + (shaders (list vertex-shader fragment-shader))) (shader-program-guardian shader-program) (for-each (lambda (shader) (glAttachShader id (shader-id shader))) -- cgit v1.2.3