OpenGL (4)
5.1 線を引く
以下なナニをでっち上げた。
(use gl) (use gl.glut) (define (disp) (gl-clear GL_COLOR_BUFFER_BIT) (gl-begin* GL_LINE_LOOP (gl-vertex 0.0 0.6) (gl-vertex 0.3 -0.6) (gl-vertex -0.6 0.3) (gl-vertex 0.6 0.3) (gl-vertex -0.3 -0.6) ) (gl-flush) ) (define (init) (gl-clear-color 0.0 0.0 1.0 1.0) ) (define (main args) (glut-init args) (glut-init-display-mode GLUT_RGBA) (glut-create-window (car args)) (init) (glut-display-func disp) (glut-main-loop) 0)
微妙な星印。ウィンドウのリサイズで星の大きさも変わります。色云々は無視してこのまま 6.座標軸を設定する、に行きます。
あ
そーゆー意味では現状は
- ウィンドウの左下の座標が (-1.0 -1.0)
- ウィンドウの右上の座標が (1.0 1.0)
に固定されてる模様。
6.1 座標軸とビューポート
表示内容の大きさを変えずに表示領域のみを広げるように、との事。上記のソレに若干のコードを追加。差分ではなく全部を以下に引用。
(use gl) (use gl.glut) (define (resize w h) (gl-viewport 0 0 w h) (gl-load-identity) (gl-ortho (- (/ w 200.0)) (/ w 200.0) (- (/ h 200.0)) (/ h 200.0) -1.0 1.0) ) (define (disp) (gl-clear GL_COLOR_BUFFER_BIT) (gl-begin* GL_LINE_LOOP (gl-vertex 0.0 0.6) (gl-vertex 0.3 -0.6) (gl-vertex -0.6 0.3) (gl-vertex 0.6 0.3) (gl-vertex -0.3 -0.6) ) (gl-flush) ) (define (init) (gl-clear-color 0.0 0.0 1.0 1.0) ) (define (main args) (glut-init args) (glut-init-display-mode GLUT_RGBA) (glut-create-window (car args)) (glut-display-func disp) (glut-reshape-func resize) (init) (glut-main-loop) 0)
- gl-viewport でウィンドウ全体をビューポートにして
- ビューポートは実際に描画が行なわれる領域
- 上記の例だとウィンドウ全体?
- gl-load-identity で変換行列を初期化して
- gl-ortho で (ry
限界気味ながらもドキュメント読んでみます。何か分かれば追記します。