0

我使用 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)

我不确定这个错误是什么意思,或者如何解决它。谁能帮忙/

4

1 回答 1

1

您的计算机上没有 OpenGL 3.1 支持。Core31您已经从12中导入了该函数。您需要在启动应用程序时检查您的显卡是否支持各种版本/扩展,尤其是您没有请求您不支持的 OpenGL 配置文件。Core21ARB.ShaderObjects

如果您使用 HaskellOpenGL库而不是OpenGLRaw,则会自动为您处理这种区别。

1嗯,功能没有改变Core21Core31所以使用旧版本将无济于事

2你不应该使用ARB_shader_objects.

于 2012-07-30T20:02:05.197 回答