Как сделать программируемый конвейерный контекст OpenGL в Racket - PullRequest
0 голосов
/ 01 марта 2019

В 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, а затем отобразить его после очистки до черного цвета.Однако на моей машине он на самом деле выдает:

broken viewport

Это фон по умолчанию, а не сплошное черное окно, которое я ожидал.Я запускаю эту программу на Windows 10 на компьютере с графикой Intel HD 520.

...