我使用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)
我不确定这个错误意味着什么,或者如何解决它。任何人都可以帮忙/
答案 0 :(得分:1)
您的计算机上没有OpenGL 3.1支持。您已经从Core31
导入了该函数,而您可能需要 1 或Core21
2 。启动应用程序时,您需要检查您的图形卡是否支持各种版本/扩展,特别是您没有请求不支持的OpenGL配置文件。ARB.ShaderObjects
如果您使用Haskell OpenGL
库而不是OpenGLRaw
,则会自动为您进行区分。
1 好吧,该功能在Core21
和Core31
之间没有变化,所以使用旧版本无济于事
2 你绝不能使用ARB_shader_objects
。