マルチテクスチャについて

意外と簡単でした。(もっとオプションが色々あるのかもしれませんが)
draw-mixed-shapeで2つのtextureを混ぜ合わせて表示できます。
まだオプションの部分に直接GL_REPLACEなどのglの引数を直接与えていますが、いずれ:typeA :replaceなどにしようと思います。
ただ、この方法では3つのtextureを加法的に混ぜ合わせることができないですし、テクスチャ中の一部分だけを混ぜ合わせるということができないですね。
これについても後で改良を加えていこうと思っています。

code

(use gl.processing)

;;GL_TEXTURE_ENV
;; GL_MODULATE GL_REPLACE GL_DECAL GL_ADD
(define A #f)
(define B #f)
(define draw (draw-once$ 
              (^ () 
                 (with-matrix
                  (translate 50 50)
                  (draw-mixed-shape A B 200 200 
                                    :typeA GL_REPLACE :typeB GL_MODULATE)))
              :save "foo.png"))

(define main (setup$ (^ () (window 300 300 "foo")
                        (set! B (file->texture "lisp-redpill.jpg"))
                        (set! A (file->texture "lisp-glossy.jpg")))
                     :draw draw))