最小的Haskell OpenGL示例导致OpenGL错误

时间:2017-08-18 01:56:38

标签: haskell opengl glut

我正在玩一个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)。

  • 即使出现错误,基元也会在屏幕上正确呈现。 (但我希望错误检查我自己的螺丝钉,所以这种误报很糟糕。)

有没有人知道如何调试这个?谢谢!

0 个答案:

没有答案