glutInitContextVersion() 在 glut 库中缺失

glutInitContextVersion() is missing from glut library

本文关键字:glut glutInitContextVersion      更新时间:2023-10-16

我正在练习一些opengl代码,当我想通过glutInitContextVersion()强制opengl上下文使用某个版本的opengl时,编译过程失败并给出以下消息:-

使用未声明的标识符"glutInitContextVersion"

我想解决这个问题,所以我让我的代码尽可能简单

法典

#include "File.h"
#include <GLUT/GLUT.h>
#include <OpenGL/OpenGL.h>
using namespace std;
int  main ()
{
    glutInitContextVersion(3,2);
    return 1;
}

但是,我能够使用其他 glut 函数而没有任何错误或警告消息

我在装有OS X 10.9.1的Macbook air上运行Xcode 4.4.1

您可以使用 OS X 10.9 的 Xcode 版本附带的 GLUT 创建 3.2+ 核心配置文件上下文。您只需要使用不同的界面即可。您需要将GLUT_3_2_CORE_PROFILE标志添加到glutInitDisplayMode()调用中,而不是调用glutInitContextVersion()

glutInitDisplayMode(... | GLUT_3_2_CORE_PROFILE);

您还需要在<GLUT/glut.h>之前包含<OpenGL/gl3.h>才能使用 GL3 及更高版本的功能。

整个事情将生成一堆编译器警告,因为 GLUT 在 OS X 10.9 中被标记为已弃用。我对相关问题的回答包含有关如何禁用这些警告的说明:Mac OSX 10.9 中的 Glut 弃用,IDE:QT Creator。

我遇到了类似的问题,我没有#include <GL/freeglut.h>."glutInitContextVersion()"是freeglut添加的一个新函数,所以除了glut之外,还需要包含freeglut。

GLUT

的开发在很多年前就结束了,这实际上是一个非标准的扩展(在FreeGLUT中添加)。OS X 附带了自己的标准 GLUT (3.x) 实现。虽然既然您在问题中提到了OS X 10.9,但值得指出的是,如果您尝试使用它,编译器将生成各种烦人的弃用警告。

如果你想使用OS X附带的框架在OS X上获取3.2核心上下文,你必须使用CGL(C)或NSOpenGL(Objective C)。

如果您坚持使用 GLUT,则需要为 OS X 找到一个 FreeGLUT 端口,而不是平台附带的框架。这当然意味着跟踪其他依赖项,但我认为这没什么大不了的。请记住停止包含 Xcode 附带的 GLUT 标头。