今作っているソフトウェア

http://github.com/podhmo/gauche-gl-processing

概要

名前は適切ではないかもしれないけれど、今のところは"gauche-gl-processing"という名前で呼んでいる。
githubにコードを載せている。(ただし、見るに値するほどのものじゃない。今のところ)
名前の由来は単純で、gauche-glの機能をprocessing-likeに使いたいということから。
gaucheを選んだ理由は関数がfirst-class-objectでループを避けた記述が可能なため。
schemeでのプログラミング=記号処理、project-euler,単純な文字列操作という状況から抜け出したいと思った。

コンセプト

とりあえず、実効速度は気にしない。
なるべく、processingの実装に合わせるようにする(と当初は考えていた)。
可能な限り、gl{,u,ut}の文字をコードから隠蔽するようにする*1

まだAPIの仕様はころころ変わる可能性が高い。

実装した機能

画像の読み込み:imlib2を利用したライブラリを作成、gauche-imlibs*2
jpeg,png,gifある程度のファイル形式の画像を読み込むことができるようになった。

hello world

こんな感じの画面を表示できる。てきとーですいません。

code

(use gl.processing)
                         
(define draw
  (draw-once$
   (lambda ()
     (fill 0.5 0.5 0.5)
     (rect 150 150 100 100)
     (fill 1 1 1)
     (ellipse 150 150 30 60)
     (print "[ESC]:TO EXIT"))))

(define main 
  (setup$ (lambda ()
             (window 300 300 "draw rect" 100 100)
             (rect-mode! 'center))
          :reshape (2d-elastic-reshape$ 300 300)
          :draw draw))

(main '())

明日から少しずつコードを交えてできることなどを書いていく…つもり。

*1:openglを使うことに対する個人的な精神的なコストが高めであるので、それを緩和することが目的

*2:実際のところ、名前とは異なりimlib2のbindingにはなっていない。