簡體   English   中英

如何在球拍中使用 OpenGL 繪制三角形

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM