我正在玩一个OpenGL示例并遇到了问题。我将其最小化为mainstream Haskell/OpenGL examples之一。这是Windows 10,Haskell平台(32位8.0.2-a。几乎是正面的-a变体)。
import Graphics.UI.GLUT
main :: IO ()
main = do
(_progName, _args) <- getArgsAndInitialize
_window <- createWindow "Hello World"
displayCallback $= display
mainLoop
display = do
let color3f r g b = color $ Color3 r g (b :: GLfloat)
vertex3f x y z = vertex $ Vertex3 x y (z :: GLfloat)
clear [ColorBuffer]
renderPrimitive Points $ do
-- color3f 1 0 0
-- vertex3f 0 0 0
return ()
-- << error on glEnd() of renderPrimtive >>
flush
reportErrors
事实:
我已经尝试使用Haskell平台(GHC 8.0.2)附带的默认glut32.dll
,我也尝试了freeglut
。使用gDEBugger,我能够确定glEnd
命令首先报告错误(由renderPrimtive
调用)。即使没有正文(顶点或颜色变化),渲染也会发出一些使OpenGL不满意的命令(或者空命令会产生不同的错误)。
我也尝试使用其他原语Lines
,甚至是上面链接中的示例程序(使用Quads
)。
即使出现错误,基元也会在屏幕上正确呈现。 (但我希望错误检查我自己的螺丝钉,所以这种误报很糟糕。)
有没有人知道如何调试这个?谢谢!