我正在尝试在 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 项目打开一个窗口?
预先感谢您的帮助。