我一直在努力让OpenGL与Racket合作,而且我设法让基本的画布工作:
#lang racket/gui
(provide tennis-canvas%)
(require opengl)
(define tennis-canvas%
(class* canvas% ()
(inherit with-gl-context swap-gl-buffers)
(define/public (gl-init)
(with-gl-context
(lambda ()
(print (glGetString GL_VERSION))
(glClearColor 1.0 0.0 1.0 1.0)
)
)
)
(define/override (on-paint)
(with-gl-context
(lambda ()
(glClear GL_COLOR_BUFFER_BIT)
(swap-gl-buffers)
)
)
)
(super-instantiate () (style '(gl no-autoclear)))
)
)
有一点需要注意:如果我使用(require opengl)
它不起作用,并提供错误OpenGL procedure not available: glGetString
。如果我切换到(require sgl/gl)
一切都很好,但据我所知,sgl/gl
仍然停留在OpenGL 1.5上,我想使用新的东西。从我在网上找到的,这是某种核心/兼容性上下文问题,但我真的不知道如何解决它。我试图摆弄gl-config%
中的遗留选项,但它没有任何帮助。
我有一个Nvidia GTX 750,根据GL_VERSION
我在OpenGL 4.5上。