OpenGL 3.x于2012年中期在Macbook Air上发布

OpenGL 3.x on Macbook Air mid 2012

本文关键字:Air Macbook 2012年 OpenGL      更新时间:2023-10-16

我正试图从我的大学讲师工作中制作的模板中获得OpenGL/glew程序。他在程序中添加了以下代码:

if(!GLEW_VERSION_3_1) {
    std::cerr << "Driver does not support OpenGL 3.1" << std::endl;  
    return 1;
}

这会在我的mac上打印错误。经过一些实验,我发现我的mac实际上运行的是OpenGL(2.1 INTEL-8.28.30)。在这部分代码之前,我已经使用了一个讨厌的#ifndefAPPLE来解决这个问题,但从长远来看,我无法做到这一点。

有什么方法可以升级到3.1吗?

该问题与OpenGL中核心和兼容性上下文的概念以及Apple的实现有关。您需要确保应用程序请求核心配置文件OpenGL上下文。

Apple支持兼容OpenGL上下文(支持所有不推荐使用的旧功能),最高支持OpenGL 2.1(加上几个扩展)。苹果支持核心OpenGL上下文(删除了旧的弃用功能),直到OSX Mavericks支持OpenGL 4.1(取决于硬件支持,3.3在旧硬件上)。如果您下载一个名为OpenGL Extension Viewer的程序,您可以看到可用的内容。

当您的程序创建OpenGL上下文时,默认情况下它会获得兼容性(以避免破坏旧程序)。您需要特别标记您想要一个核心配置文件。执行此操作的方法将取决于您使用的窗口库。如果您碰巧使用SDL2,那么在创建上下文时只需要设置一个额外的标志。如果直接使用Apple GL,您需要查看他们的文档。

请参阅:http://www.opengl.org/wiki/Core_And_Compatibility_in_Contexts

注意:我注意到您正在使用GLEW。我在过去遇到过GLEW和核心上下文的问题。这是因为它使用了一个不推荐使用的方法来请求扩展字符串(因此在核心上下文中失败)。它看起来好像不支持任何扩展。如果发生这种情况,请参阅GLEW网站,您可以将一个实验选项传递给它的init以使其工作。