Проблема сборки Windows / opengl glext.h - PullRequest
2 голосов
/ 16 декабря 2010

Итак, я пытаюсь перенести проект c ++ с использованием Qt и OpenGL, написанный и скомпилированный на компьютере с Linux, на мой компьютер с Windows 7 дома, но я столкнулся с некоторыми трудностями. Сначала я узнал, что некоторые элементы gl (такие как GL_TEXTURE0) больше не определены, потому что gl.h не определяет их для окон. Кроме того, 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. Если я включу QGLShaderProgram перед glext.h, то у меня все еще будет эта проблема, но make также предупреждает меня, что я переопределяю довольно много вещей, которые определены как в QGLShaderProgram, так и в glext, так что я знаю, что последний файл включен. Любая помощь будет принята с благодарностью.

Ответы [ 3 ]

1 голос
/ 16 декабря 2010

Вы на правильном пути, но, как писал Ник Мейер, вам нужно получить указатели на функции во время выполнения.

Хороший и чистый пример уже есть в каталоге установки Qt, по крайней мере, начиная с 4.6.Отметьте "Ящики" из каталога "demos".Существует glextensions.h / cpp , который заботится об этих необходимых функциях в Qt-way, используя Qt's QGLContext и т. Д.

1 голос
/ 16 декабря 2010

Если вы ленивый как я, просто перейдите на http://glew.sourceforge.net и используйте это, не нужно возиться с разными заголовочными файлами и вручную получать указатели функций.Это так же просто, как

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

и

/* for each OpenGL context */
if( createGLContext(...) == SUCCESSFULL )
    glewInit()
0 голосов
/ 16 декабря 2010

Если вы используете Qt, вам, вероятно, следует использовать qmake - и просто добавить

QT + = opengl

в ваш файл проекта qmake.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...