Bul*_*Bul 5 c++ opengl macos glut undeclared-identifier
我正在练习一些opengl代码,但是当我想强制opengl上下文通过glutInitContextVersion()使用某个版本的opengl时,它会失败编译过程并给出这样的信息: -
使用未声明的标识符'glutInitContextVersion'
我想解决这个问题,所以我保持我的代码尽可能简单
码
#include "File.h"
#include <GLUT/GLUT.h>
#include <OpenGL/OpenGL.h>
using namespace std;
int main ()
{
glutInitContextVersion(3,2);
return 1;
}
Run Code Online (Sandbox Code Playgroud)
但是,我能够使用其他过剩函数,没有任何错误或警告消息
我正在使用OS X 10.9.1在Macbook air上运行Xcode 4.4.1
我也有类似的问题,但我没有#include <GL/freeglut.h>。“glutInitContextVersion()”是freeglut添加的新函数,所以除了glut之外还需要包含freeglut。
您可以使用OS X 10.9的Xcode版本附带的GLUT创建3.2+核心配置文件上下文.您只需使用不同的界面.而不是调用的glutInitContextVersion(),您需要将添加GLUT_3_2_CORE_PROFILE标记到glutInitDisplayMode()呼叫:
glutInitDisplayMode(... | GLUT_3_2_CORE_PROFILE);
Run Code Online (Sandbox Code Playgroud)
您还需要<OpenGL/gl3.h> 在 <GLUT/glut.h>使用GL3及更高版本功能之前加入.
整个过程会产生一堆编译器警告,因为在OS X 10.9中GLUT被标记为已弃用.我对相关问题的回答包含有关如何禁用这些警告的说明:Mac OSX 10.9中的Glut弃用,IDE:QT Creator.
GLUT开发在很多年前结束,实际上是一个非标准扩展(在FreeGLUT中添加).OS X附带自己的标准GLUT(3.x)实现.虽然你在问题中提到OS X 10.9,但值得指出的是,如果你试图使用它,编译器会产生各种恼人的弃用警告.
如果您想使用随附的框架在OS X上获得3.2核心上下文,则必须使用CGL(C)或NSOpenGL(目标C).
如果您坚持使用GLUT,则需要为OS X找到FreeGLUT的端口,而不是平台附带的Framework.这当然意味着追踪其他依赖关系,但我认为这不会是一件大事.请记住停止包含Xcode附带的GLUT标头.
| 归档时间: |
|
| 查看次数: |
6685 次 |
| 最近记录: |