所以我试图将在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中定义的很多东西,所以我知道后面的文件被包含了。任何帮助都会非常感激。
答案 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项目文件。