From 09fd03e14729ea929ecc3428ccfe091fa8c8deba Mon Sep 17 00:00:00 2001 From: David Thompson Date: Wed, 11 Mar 2015 19:56:14 -0400 Subject: render: context: Add GL parameter type. * sly/render/context.scm (): New record type. (%make-gl-parameter, make-gl-parameter, gl-parameter?, gl-parameter-default, gl-parameter-bind, gl-parameter-ref, %gl-parameter-set!, gl-parameter-set!, gl-parameter-reset!): New procedures. Fixup gl-parameter --- sly/render/context.scm | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/sly/render/context.scm b/sly/render/context.scm index 0e96e26..aec04b0 100644 --- a/sly/render/context.scm +++ b/sly/render/context.scm @@ -43,6 +43,24 @@ render-context-shader set-render-context-shader! render-context-mesh set-render-context-mesh!)) +(define-record-type + (%make-gl-parameter default bind value) + gl-parameter? + (default gl-parameter-default) + (bind gl-parameter-bind) + (value gl-parameter-ref %gl-parameter-set!)) + +(define (make-gl-parameter default bind) + (%make-gl-parameter default bind default)) + +(define* (gl-parameter-set! parameter value #:optional force?) + (unless (and (not force?) (equal? (gl-parameter-ref parameter) value)) + (%gl-parameter-set! parameter value) + ((gl-parameter-bind parameter) value))) + +(define (gl-parameter-reset! parameter) + (gl-parameter-set! parameter (gl-parameter-default parameter) #t)) + (define-record-type (%make-render-context blend-mode depth-test? texture shader mesh transform-stack) -- cgit v1.2.3