OpenGL - ARB 扩展

OpenGL - ARB extension

我使用的是 MacBook Pro(13 英寸,2010 年中)并且我使用 OpenGL。我注意到,库中缺少某些功能。我在 Internet 上找到了有关我的硬件的规格,上面写着:“支持 OpenGL 3.3”。很奇怪,所以我打印了我的 OpenGL 版本,它是 2.1,不是 3.3!。 (然后我发现,最新的 MacBook(2014)具有相同的 OpenGL 2.1 版,WTF)

那我差点从window跳下去了。 (JK)

我用谷歌搜索了一些关于 2.1 的东西,扩展名 ARB,但是没有文档,没有用法,没有人使用它。谁能给我解释一下,那是什么?如何使用它?有什么区别?

我读过(如果我理解得很好),而不是新的 OpenGL 3.X,有类似的 ARB 扩展。我希望,如果他们写的规范支持 3.3 版,ARB 应该是相同的(至少功能相同)。

如果有人向我解释发生了什么,我会很高兴。

问题:

我对 FBO 绘图的 多重采样纹理 有疑问。它可以由函数 glTexImage2DMultisample 和参数 GL_TEXTURE_2D_MULTISAMPLE 创建。它来自 3.2 或更高版本。

那么我应该用什么,或者可以用 ARB 来做?

我在图书馆找到了 GL_ARB_multisample。那是什么?有什么用法吗?我在互联网上找到的所有功能都丢失了。在header中有一些定义如GL_MULTISAMPLE_ARB。我试图通过 glEnable 启用它(GL_MULTISAMPLE 也被定义),它不起作用。

请帮助我。 :(

编辑:

如果你知道解决这个问题的不同方法,我会很高兴。

原题:

您必须将 OpenGL 上下文从 Legacy 切换到 Core 配置文件。核心配置文件需要对您的代码进行一些更改。您必须迁移您的代码和着色器,因为它是 OpenGL 和 GLSL 的新版本。查看官方视频,如何迁移和重写功能以验证新版本的代码。 Apple Developer Site - OpenGL(右侧视频)

您必须做的重要事情是添加 #import <OpenGL/gl3.h>,所有功能都将可见以供使用。

要使其正常工作并调试着色器,必须设置 NSOpenGLPixelFormat。将具有 NSOpenGLProfileVersion3_2Core 值的 NSOpenGLPFAOpenGLProfile 键添加到 NSOpenGLPixelFormatAttribute 数组:

NSOpenGLPixelFormatAttribute attribs[] = {
    // ...
    NSOpenGLPFAOpenGLProfile, NSOpenGLProfileVersion3_2Core,
    // ...
};

这有助于您调试代码。

非常感谢您的帮助,希望对您有所帮助。