[英]How to draw a triangle with OpenGL in Racket
我試圖從Racket OpenGL 文檔中獲取這個三角形示例,該文檔在一個簡單的 GUI window 中工作,但我只是看到一個黑盒子。 我缺少什么來顯示一些東西?
#lang racket
(require racket/gui/base
sgl
sgl/gl-vectors)
(define frame (new frame% [label "OpenGL"]))
(define (draw self dc)
(send self
with-gl-context
(lambda ()
(gl-begin 'triangles)
(gl-vertex 1 2 3)
(gl-vertex-v (gl-float-vector 1 2 3 4))
(gl-end))))
(define canvas (new canvas%
[parent frame]
[min-width 500]
[min-height 500]
[style '(gl)]
[paint-callback draw]))
(send frame show #t)
以下代碼將紅色三角形繪制到 canvas 中。 您可以將draw-triangle
中的代碼替換為該示例代碼,但它似乎只顯示了一些命名約定,實際上什么也沒做。
#lang racket/base
(require racket/gui
sgl)
(define (draw-triangle)
(gl-begin 'triangles)
(gl-color 1 0 0)
(gl-vertex 0 0 0)
(gl-vertex 0.75 0 0)
(gl-vertex 0.75 0.75 0)
(gl-end))
(define my-canvas%
(class* canvas% ()
(inherit with-gl-context swap-gl-buffers)
(define/override (on-paint)
(with-gl-context (lambda ()
(draw-triangle)
(swap-gl-buffers))))
(super-instantiate () (style '(gl)))))
(define frame (new frame%
[label "OpenGL"]
[min-width 500]
[min-height 500]))
(define canvas (new my-canvas%
[parent frame]))
(send frame show #t)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.