Macos OpenGL 3.2 VAO创建在OSX Maverick上失败

Macos OpenGL 3.2 VAO创建在OSX Maverick上失败,macos,opengl,Macos,Opengl,我有一个在MAC OS X Lion上运行良好的程序。它使用OpenGL 3.2核心配置文件。现在,在我升级到Maverick后,它在glGenVertexArrays()上的上下文设置失败。上下文正在创建中。Maverick在OpenGL 3.2设置方面有什么变化 我初始化上下文,如下所示: static CGLPixelFormatAttribute attributes[4]={ kCGLPFAAccelerated, kCGLPFAOpenGLProfile, (CGLPixelF

我有一个在MAC OS X Lion上运行良好的程序。它使用OpenGL 3.2核心配置文件。现在,在我升级到Maverick后,它在glGenVertexArrays()上的上下文设置失败。上下文正在创建中。Maverick在OpenGL 3.2设置方面有什么变化

我初始化上下文,如下所示:

static CGLPixelFormatAttribute attributes[4]={
kCGLPFAAccelerated,  
kCGLPFAOpenGLProfile, 
(CGLPixelFormatAttribute)kCGLOGLPVersion_3_2_Core,
(CGLPixelFormatAttribute)0
};





    _errorCode = CGLChoosePixelFormat(attributes,&_pix,&_num);
    if(_errorCode > 0){

        throw ;
    }
    _errorCode = CGLCreateContext(_pix, NULL, &_context);
    if(_errorCode > 0){

          throw;
    }
    CGLDestroyPixelFormat(_pix);

    _errorCode = CGLSetCurrentContext(_context);
    if(_errorCode > 0){

        throw ;
    }
在生成VAO句柄之前,所有这些都不会抛出错误。此外,glGetError会返回一些垃圾

更新:

我发现错误是GL\u无效的\u帧缓冲区\u操作​, 0x0506。现在当我执行

gldrawArray(GL_三角带,0,4)


当没有绑定自定义帧缓冲区时。如果我使用自定义FBO调用draw命令,它会起作用。我的上下文创建没有显示。它是屏幕外的。是否可能是因为在较新的实现中,Apple强制显示存在,以便访问默认FBO?在Lion上,我也做了同样的操作,并且成功了。顺便说一句,GL版本是4.1。

没有任何更改,但constant将为您提供的版本不再是3.2。它将为您提供硬件支持的最新上下文版本,在该常量中加入明确的版本号对苹果来说是相当短视的。你剩下的问题很难回答/理解,你能展示一些实际的GL API调用吗?Mavericks将(最低)核心配置文件升级到了3.3。试一试?你不能在OS X中请求特定版本;您只需使用3_2_Core常量,OSX就会提供任何可用的核心配置文件。老实说,他们应该创建两个常量:
kCGLOGLProfileCore
kCGLOGLProfileLegacy
,因为在常量中有一个版本号会让很多人感到困惑;)然后我不知道它为什么会失败。它是同一台机器,具有相同的GPU。它应该支持VAO。谁说它不支持?您在这里没有给出任何真实的信息,只是“
glGetError
返回一些垃圾信息。”无法从描述中诊断您的问题。