Как использовать GLEW с Qt? - PullRequest
4 голосов
/ 19 ноября 2010

Я хочу использовать GLEW с Qt под Windows (7, если это имеет значение).

Что я сделал, так это зашел на сайт GLEW, скачал пакет для windows, затем поместил glew.dll в папку System32. В моем pro-файле я ссылался на файлы .lib с LIBS += .../path_to_the_libs/glew32.lib и таким же для glew32s.lib (не уверен, для чего последний). В моем подклассе QGLWidget я убедился, что glew.h включен до <QGLWidget> и, следовательно, до gl.h и glu.h. В функции main() первым делом я вызываю glewInit и вызываю glGetError, но мое приложение завершает работу с каким-то странным кодом, например очень большим отрицательным числом.

У меня есть подозрение, что я могу ошибаться (я относительно новичок в Qt и OpenGL и абсолютно новичок в GLEW), но у меня также есть подозрение, что одна из главных ошибок - это то, что я Предположим, они были построены с MSVC и поэтому не могут быть связаны с MinGW ... В любом случае, кто-нибудь может предоставить пошаговую инструкцию, как установить GLEW с Qt и использовать его? Я был бы очень признателен. Заранее спасибо

Edit: Ребята, может быть, я прошу слишком много, но мне бы очень хотелось пошаговую инструкцию:)

Ответы [ 2 ]

7 голосов
/ 19 ноября 2010

Вы не должны вызывать glewInit() до того, как у вас будет готов контекст OpenGL. Звоните прямо перед вашими gl* звонками, а не в начале main. Это должно сработать.

Кроме того, не используйте одновременно glew32.lib и glew32s.lib - первый должен использоваться вместе с файлом DLL, а второй статический (ваш .exe становится больше, но вам не нужно распространять свое приложение с .dll). Решите и используйте либо.

0 голосов
/ 27 декабря 2010

Qt 4.7 может создать любой контекст OpenGL. Используйте QGLFormat.setProfile () и QGLFormat.setVersion ()

Единственным недостатком является то, что у вас все еще нет привязок OpenGL 3+.

Пошаговое решение:

  1. Создать новый подкласс QGLWindget.
  2. В конструкторе нового класса установите новый QGLContext с правильными номерами OpenGL.
  3. Вызовите glewInit ().
  4. Передать контекст в конструктор QGLWidnet.

Если я правильно помню, так и должно быть! GLEW dll следует размещать в надлежащих системных папках и подключать опции компилятора, но они такие же, как для GLEW без QT.

...