SICP §2.2.4(図形言語 その2)

最低限の情報収集が完了したか??
とりあえず現時点での経過をメモ。
gauche-gl は既にインストール済みとし、以下の各コードを適当なファイルにコピペして実行権限をつけて実行してみると、段階を追って画面描画ができていることが分かると思うっす。

window を表示。

これは本当にただ window を表示するだけ。
で、表示したときの背景がそのまま表示内容になってしまう。
リサイズするとその時の背景になっているディスプレイの内容が window 内部に表示される。
百聞は一見にしかず。やってみよう。

#!/usr/bin/gosh
(use gl)
(use gl.glut)

(define (main args)
  (glut-init args)
  (glut-create-window "Painter Line Test")
  (glut-main-loop)
  0)

window の背景色塗りつぶし

初期表示時またはリサイズ時の背景が、画面キャプチャにならないように塗りつぶした window を表示するようにしてみた。

#!/usr/bin/gosh
(use gl)
(use gl.glut)

(define (disp)
  (gl-clear GL_COLOR_BUFFER_BIT)
  (gl-flush))

(define (main args)
  (glut-init args)
  (glut-create-window "Painter Line Test")
  (glut-display-func disp)
  (glut-main-loop)
  0)

window の背景色を白色に塗りつぶし

init 手続きを追加して、その中で背景色を白色に指定してみた。多分この方が後々見やすいので。

#!/usr/bin/gosh
(use gl)
(use gl.glut)

(define (init)
  (gl-clear-color 1.0 1.0 1.0 1.0))

(define (disp)
  (gl-clear GL_COLOR_BUFFER_BIT)
  (gl-flush))

(define (main args)
  (glut-init args)
  (glut-create-window "Painter Line Test")
  (glut-display-func disp)
  (init)
  (glut-main-loop)
  0)

線分を描画

disp 手続きにロジックを追加して線分を描画してみた。

#!/usr/bin/gosh
;;; 線分を描画する
(use gl)
(use gl.glut)

(define (init)
  (gl-clear-color 1.0 1.0 1.0 1.0))

(define (disp)
  (gl-clear GL_COLOR_BUFFER_BIT)
  (gl-color 0.0 0.0 0.0 0.0)
  (gl-begin GL_LINE_LOOP)
  (gl-vertex -0.9 -0.9)
  ;(gl-vertex 0.9 -0.9)
  (gl-vertex 0.9 0.9)
  ;(gl-vertex -0.9 0.9)
  (gl-end)
  (gl-flush))

(define (main args)
  (glut-init args)
  (glut-create-window "Painter Line Test")
  (glut-display-func disp)
  (init)
  (glut-main-loop)
  0)

とりあえずここまでできれば図形言語セクションで必要なモノの実装ができそうな気がする。。
甘いかな?ま、不足してたらまたそん時戻って再調査すればいっか♪