无法理解Haskell OpenGL程序触发的“未知OpenGL扩展条目”错误

时间:2012-07-30 19:54:20

标签: opengl haskell

我使用GHC 7.4.1(Haskell Platform 2012.2.0.0)在Windows XP上编写了以下程序:

mkVertexShader :: IO Bool
mkVertexShader = do
  shader <- glCreateShader gl_VERTEX_SHADER
  withCString vertexShader $ \ptr -> glShaderSource shader 1 (castPtr ptr) nullPtr
  glCompileShader shader
  status <- with 0 $ \ptr -> do
      glGetShaderiv shader gl_COMPILE_STATUS ptr
      peek ptr
  return $ status == fromIntegral gl_FALSE

运行时,程序将以

中止
*** Exception: user error (unknown OpenGL extension entry glCreateShader, check for OpenGL 3.1)

我不确定这个错误意味着什么,或者如何解决它。任何人都可以帮忙/

1 个答案:

答案 0 :(得分:1)

您的计算机上没有OpenGL 3.1支持。您已经从Core31导入了该函数,而您可能需要 Core21 1 ARB.ShaderObjects 2 。启动应用程序时,您需要检查您的图形卡是否支持各种版本/扩展,特别是您没有请求不支持的OpenGL配置文件。

如果您使用Haskell OpenGL库而不是OpenGLRaw,则会自动为您进行区分。

1 好吧,该功能在Core21Core31之间没有变化,所以使用旧版本无济于事

2 你绝不能使用ARB_shader_objects