我正在尝试为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>
,则<OpenGL/gl3.h>
可能会收到编译器警告,这是因为有gl3.h
两个目的:
它们实际上是互斥的,正确的标头取决于您使用的上下文版本:
#include <OpenGL/gl.h>
#include <OpenGL/gl3.h>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句