【发布时间】:2023-04-02 14:28:01
【问题描述】:
我正在尝试在 Xcode 5 (Mac OSX 10.8.4) 上为我的 OpenGL 项目设置 GLFW3。我已经成功安装并将我的项目链接到 GLFW3 没问题。我什至用该项目成功创建了一个窗口,并且我能够通过该窗口检测鼠标和键盘输入,所以我相信我正确连接了 GLFW3(或者至少看起来如此)。
但是,当我尝试绘制对象时出现了问题。这是出现错误的代码 sn-p:
#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/gl.h>而不是<OpenGL/gl3.h>。这在 OS X 上很重要。 -
我什至没有包含
。根据 glfw 文档,glfw 为您包含了 。我仅有的包括#include 、#include 用于在着色器中读取,以及#include 用于字符串操作。就是这样。 -
哇,你明白了。谢谢你,安东。我决定#include
,它成功了!所以,GLFW3 应该包含“gl3.h”,但它没有(它包含“gl.h”)。您能否将您的回复重新发布为答案,以便我接受?再次感谢!