如何在Racket中制作可编程管道OpenGL上下文

时间:2019-02-28 23:35:36

标签: opengl graphics racket

在Racket中,我想从GUI获取OpenGL上下文,将其清除为黑色,然后将其显示在屏幕上。我正在使用opengl库来使用变量函数管道。我目前有以下代码:

#lang racket/gui
(require opengl)

(define video-canvas%
  (class canvas%
    (init-field width height)
    (super-new [style '(gl no-autoclear)]
               [min-width width]
               [min-height height]
               [stretchable-width #f]
               [stretchable-height #f])

    (send this with-gl-context
          (λ ()
            (glViewport 0 0 width height)
            (glClearColor 0.0 0.0 0.0 0.0)))

    (define/public (draw-frame)
        (send this with-gl-context
              (λ () (glClear GL_COLOR_BUFFER_BIT)))
        (send this swap-gl-buffers))))

(define f (new frame% [label "test video"]))
(define vc (new video-canvas% [parent f]
                [width 640] [height 480]))
(send f show #t)
(send vc draw-frame)

这似乎将创建一个框架,将OpenGL视口放在其顶部,然后将其清除为黑色后进行渲染。但是,在我的机器上,它实际上会产生:

broken viewport

这是默认背景,而不是我期望的纯黑色窗口。我正在Windows 10上使用Intel HD 520图形的计算机上运行此程序。

0 个答案:

没有答案