Mac OSX 10.8.4 上使用 GLFW3 的现代 OpenGL - 缺少 glGenVertexArrays() 和 glBindVertexArray()?

2024-02-25

我正在尝试在 Xcode 5 (Mac OSX 10.8.4) 上为我的 OpenGL 项目设置 GLFW3。我已成功安装并将我的项目链接到 GLFW3,没有问题。我什至用该项目成功创建了一个窗口,并且我能够使用该窗口检测鼠标和键盘输入,所以我相信我正确连接了 GLFW3(或者至少看起来如此)。

然而,当我尝试绘制一个对象时,问题出现了。这是出现错误的代码片段:

#include <GLFW/glfw3.h>    

void LoadObject()
{
    glGenVertexArrays(1, &VAO_myObj); // ERROR : Use of undeclared identifier 'glGenVertexArrays'
    glBindVertexArray(VAO_myObj);     // ERROR : Use of undeclared identifier 'glBindVertexArray'


    glGenBuffers(1, &VBO_myObj);                // No error
    glBindBuffer(GL_ARRAY_BUFFER, VBO_myObj);   // No error

    glBufferData(blah blah blah);      // No error

    glEnableVertexAttribArray(0);      // No error
    glVertexAttribPointer(blah);       // No error


    glBindBuffer(GL_ARRAY_BUFFER, 0);  // No error
    glBindVertexArray(0);              // ERROR : Use of undeclared identifier 'glBindVertexArray'
}

因此,这让我相信 GLFW3 无法链接到这些函数(?)。当我在 Xcode 中输入“glGen...”时,我只在弹出窗口中看到以下 4 个函数:

void glGenBuffers(GLsizei n, GLuint * buffers)
GLuint glGenLists(GLsizei range)
void glGenQueries(GLsizei n, GLuint * ids)
void glGenTextures(GLsizei n, GLuint * textures)

因此,很可能库中确实缺少 glGenVertexArrays()。

类似地,对于“glBind...”,当我在 Xcode 中输入名称时,只有这些名称显示在弹出窗口中:

void glBindAttribLocation(GLuint program, GLuint index, const GLchar * name)
void glBindBuffer(GLenum target, GLuint buffer)
void glBindTexture(GLenum target, GLuint texture)

我在列表中没有看到 glBindVertexArray() 。

因此,似乎缺少 glGenVertexArrays() 和 glBindVertexArray() 。但如此重要的功能他们怎么会错过呢?所以,我自己很可能在这里遗漏了一些东西。

我只是想知道以前是否有人在使用 Xcode 5 的 GLFW3 中遇到过这个问题?顺便说一句,我没有使用 glew 或任何其他 OpenGL 支持的东西。我只使用GLFW3。

对于有关此问题的任何提示或指示,我将不胜感激。

顺便说一句,您会推荐哪种工具(除了 glfw 之外)在 Mac 上为现代(基于着色器)OpenGL 项目打开窗口?

预先感谢您的帮助。


您需要包括<OpenGL/gl3.h>在 OS X 上以便使用 OpenGL 3.2 核心 API 调用。请注意,如果您同时包含两者<OpenGL/gl.h> and <OpenGL/gl3.h>您可能会收到编译器警告,这是因为gl3.h有两个目的:

  1. 提供核心 OpenGL 3.2 的函数、枚举和类型定义
  2. 消除了在核心 OpenGL 3.2 中无效的已弃用函数、枚举和类型定义


它们实际上是互斥的,正确的标头取决于您正在使用的上下文版本:

  • MacOS X 10.7+: (OpenGL: 2.1)

    • #include <OpenGL/gl.h>


  • MacOS X 10.7+: (OpenGL: 3.2 core)

    • #include <OpenGL/gl3.h>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mac OSX 10.8.4 上使用 GLFW3 的现代 OpenGL - 缺少 glGenVertexArrays() 和 glBindVertexArray()? 的相关文章

随机推荐