TAT*_*ATN 9 opengl macos xcode
我正在尝试在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'
}
Run Code Online (Sandbox Code Playgroud)
所以,这让我相信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)
Run Code Online (Sandbox Code Playgroud)
因此,很可能glgenVertexArrays()确实从库中丢失了.
类似地,对于"glBind ...",当我输入Xcode的名称时,只有这些出现在弹出窗口中:
void glBindAttribLocation(GLuint program, GLuint index, const GLchar * name)
void glBindBuffer(GLenum target, GLuint buffer)
void glBindTexture(GLenum target, GLuint texture)
Run Code Online (Sandbox Code Playgroud)
我在哪里看到列表中的glBindVertexArray().
所以,似乎缺少glGenVertexArrays()和glBindVertexArray().但他们怎么会错过这些重要的功能呢?所以,我最有可能在这里遗漏一些东西.
我只是想知道是否有人在之前使用Xcode 5的GLFW3遇到过这个问题?顺便说一下,我没有使用glew或任何其他OpenGL支持的东西.我只使用GLFW3.
我将不胜感激任何有关此问题的提示或指针.
在旁注中,您会建议在Mac上为一个现代(基于着色器的)OpenGL项目创建一个窗口(glfw旁边)?
预先感谢您的帮助.
And*_*man 19
您需要<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>rya*_*how 11
GLFW3 <GL/gl.h>默认包含.为了包括<GL/gl3.h>,你需要先粘在#define GLFW_INCLUDE_GLCOREARB某处#include <GLFW/glfw3.h>
在使用自制软件的Mac OSX安装GLFW3时,include之前的define宏将使用OpenGL/gl3.h.它可以在头文件中看到:
#if defined(__APPLE__)
#if defined(GLFW_INCLUDE_GLCOREARB)
#include <OpenGL/gl3.h>
#if defined(GLFW_INCLUDE_GLEXT)
#include <OpenGL/gl3ext.h>
#endif
...
Run Code Online (Sandbox Code Playgroud)
定义选项在glfw3 的构建指南中列出.这也减轻了编译器的警告.
| 归档时间: |
|
| 查看次数: |
10444 次 |
| 最近记录: |