diff options
Diffstat (limited to 'sly/render/model.scm')
-rw-r--r-- | sly/render/model.scm | 35 |
1 files changed, 17 insertions, 18 deletions
diff --git a/sly/render/model.scm b/sly/render/model.scm index 3cc310a..77c550e 100644 --- a/sly/render/model.scm +++ b/sly/render/model.scm @@ -31,12 +31,12 @@ #:use-module (sly math transform) #:use-module (sly math vector) #:use-module (sly math rect) + #:use-module (sly render) #:use-module (sly render shader) #:use-module (sly render texture) #:use-module (sly render utils) #:use-module (sly render camera) #:use-module (sly render color) - #:use-module (sly render context) #:use-module (sly render mesh) #:export (make-model model @@ -139,10 +139,9 @@ changing the fields specified in KWARGS." (define draw-sub-scene (delay (module-ref (resolve-interface '(sly render scene)) 'draw-scene))) -(define (draw-model model view context) +(define (draw-model model view gfx) "Render MODEL by applying its transform (multiplied by VIEW), texture, -shader, vertex array, uniforms, blend mode, etc. to the render -CONTEXT." +shader, vertex array, uniforms, blend mode, etc. using GFX." (match model ((? model-null? _) *unspecified*) @@ -150,20 +149,20 @@ CONTEXT." depth-test? sub-scene children) (when sub-scene - (with-render-context-excursion context - ((force draw-sub-scene) sub-scene context))) - - (with-transform-excursion context - (render-context-transform*! context local-transform) - (with-transform-excursion context - (render-context-transform*! context view) - (set-render-context-depth-test?! context depth-test?) - (set-render-context-blend-mode! context blend-mode) - (set-render-context-shader! context shader) - (set-render-context-mesh! context mesh) - (set-render-context-texture! context texture) + (with-graphics-excursion gfx + ((force draw-sub-scene) sub-scene gfx))) + + (with-transform-excursion gfx + (graphics-transform-mul! gfx local-transform) + (with-transform-excursion gfx + (graphics-transform-mul! gfx view) + (set-graphics-depth-test! gfx depth-test?) + (set-graphics-blend-mode! gfx blend-mode) + (set-graphics-shader! gfx shader) + (set-graphics-mesh! gfx mesh) + (set-graphics-texture! gfx texture) ;; TODO: Support user-defined uniforms. - (uniform-set! shader "mvp" (render-context-transform context)) + (uniform-set! shader "mvp" (graphics-transform gfx)) (uniform-set! shader "color" color) (uniform-set! shader "use_texture" (not (texture-null? texture))) (glDrawElements (begin-mode triangles) @@ -171,7 +170,7 @@ CONTEXT." (data-type unsigned-int) %null-pointer)) (for-each (lambda (child) - (draw-model child view context)) + (draw-model child view gfx)) children))))) ;;; |