Windows / opengl glext.h构建问题

时间:2010-12-15 23:13:44

标签: c++ qt opengl

所以我试图将在Linux机器上编写和编译的Qt和OpenGL的c ++项目带到我家的Windows 7机器上,但是我遇到了一些困难。首先我了解到不再定义一些gl(比如GL_TEXTURE0),因为gl.h没有为windows定义它们。另外,我所拥有的glext.h没有定义像glActiveTexture这样的函数。我发现的这两个问题都可以通过引入更新的glext.h来解决。

我最直接的问题似乎是我没有正确地把它带进来。如果我这样做:

#define GL_GLEXT_LEGACY      //should prevent old glext.h from being included
#define GL_GLEXT_PROTOTYPES  //should make glActiveTexture be defined 
#include <qgl.h>                 
#include "glext.h"           //local up-to-date glext.h
#include <QGLShaderProgram>

然后make告诉我,我有未定义的glActiveTexture引用。如果我在glext.h之前包含QGLShaderProgram,那么我仍然有这个问题,但是make也警告我,我正在重新定义QGLShaderProgram和glext中定义的很多东西,所以我知道后面的文件被包含了。任何帮助都会非常感激。

3 个答案:

答案 0 :(得分:1)

你走在正确的道路上,但就像Nick Meyer写的那样,你需要在运行时获得指向函数的指针。

Qt安装目录中已经有一个很好的清洁示例,至少从4.6开始。从“demos”目录中查看"Boxes"。有glextensions.h / cpp使用Qt QGLContext等以Qt方式处理所需的功能。

答案 1 :(得分:1)

如果你像我一样懒,那就跳过去吧 http://glew.sourceforge.net 并使用它,不需要摆弄不同的头文件和手动检索函数指针。它就像

一样简单
/* in every source file using OpenGL */
#include <GL/glew.h>

/* for each OpenGL context */
if( createGLContext(...) == SUCCESSFULL )
    glewInit()

答案 2 :(得分:0)

如果你正在使用Qt,你应该使用qmake - 只需添加

  

QT + = opengl

到您的qmake项目文件。