В Racket я хотел бы получить контекст 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.