在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视口放在其顶部,然后将其清除为黑色后进行渲染。但是,在我的机器上,它实际上会产生:
这是默认背景,而不是我期望的纯黑色窗口。我正在Windows 10上使用Intel HD 520图形的计算机上运行此程序。