#lang racket
(require sgl sgl/gl sgl/gl-vectors)
(require racket/gui)
;; OpenGLによる描画.
;; 関数やパラメータの形式にはRacket-StyleとC-Styleがある.
(define (draw-gl)
(gl-clear 'color-buffer-bit)
(gl-color 1.0 1.0 0.0)
(gl-begin 'line-loop)
(gl-vertex -0.9 -0.9)
(gl-vertex 0.9 -0.9)
(gl-vertex-v (gl-float-vector 0.9 0.9))
(gl-vertex -0.9 0.9)
(gl-end)
(gl-flush))
(define gl-canvas%
(class* canvas% ()
(inherit with-gl-context swap-gl-buffers)
;; on-paintをオーバーライド
(define/override (on-paint)
(with-gl-context
(lambda ()
(draw-gl)
(swap-gl-buffers))))
;; canvas%のスタイルにglを指定
(super-new [style '(gl)])))
(define top-level-frame
(new frame%
[label "OpenGL test"]
[width 400]
[height 400]))
(define canvas
(new gl-canvas%
[parent top-level-frame]))
(send top-level-frame show #t)
2012年6月20日水曜日
[Racket]GUIの中でOpenGLを利用する
RacketのGUIでは、canvas%クラスを利用してOpenGLによる描画を行えます。
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿