2013-05-16 1 views
3

я пытаюсь скомпилировать простой Qt приложений и портирование на Qt5 в про файл я включал флаг OPENGL:Qt5 отсутствует идентификатор OpenGL-х

QT += opengl widgets 

также OpenGL Qt5 путь входит:

..\..\..\..\..\..\..\..\Qt\Qt5.0.1\5.0.1\msvc2010\include\QtOpenGL 

но когда я скомпилировать приложение им получать эти ошибки компиляции

1>qmpwidget.cpp(148): error C3861: 'glClearDepth': identifier not found 
1>qmpwidget.cpp(159): error C3861: 'glLoadIdentity': identifier not found 
1>qmpwidget.cpp(167): error C2065: 'GL_QUADS' : undeclared identifier 
1>qmpwidget.cpp(167): error C3861: 'glBegin': identifier not found 
1>qmpwidget.cpp(168): error C3861: 'glTexCoord2f': identifier not found 
1>qmpwidget.cpp(168): error C3861: 'glVertex2f': identifier not found 
1>qmpwidget.cpp(169): error C3861: 'glTexCoord2f': identifier not found 
1>qmpwidget.cpp(169): error C3861: 'glVertex2f': identifier not found 
1>qmpwidget.cpp(170): error C3861: 'glTexCoord2f': identifier not found 
1>qmpwidget.cpp(170): error C3861: 'glVertex2f': identifier not found 
1>qmpwidget.cpp(171): error C3861: 'glTexCoord2f': identifier not found 
1>qmpwidget.cpp(171): error C3861: 'glVertex2f': identifier not found 
1>qmpwidget.cpp(172): error C3861: 'glEnd': identifier not found 

другая команда opengl doiazazied что здесь отсутствует?

ответ

-3

Включенный в систему GL/gl.h?

Qt сам определяет только небольшое подмножество функций OpenGL для внутреннего использования независимо от установленных в системе заголовков. Я немного удивлен glClearDepth, но все остальные функции и жетоны были удалены из OpenGL-3 и более поздних версий, и Qt5 их не использует.

0

, если вы хотите использовать старое наследие OpenGL API вы должны добавить

#include <GL/gl.h> 

и связать приложение с вашей родной библиотеки платформы OPENGL (см QtCreator .pro файлы документации, чтобы сделать это).

Новый (лучший) способ с QT 5 заключается в использовании QOpenGLFunctions. QOpenGLWidget обеспечивают доступ кроссплатформенного к функциям OpenGL через

context()->functions()->glxxxx. 

Но не все унаследованные функции обеспечиваются: только общее подмножество OpenGL 1.x и ES 2.0. Вы должны переписать свой OpenGL-код по-современному (буфер вершин, шейдеры, ...).

Вы также можете использовать более высокие OpenGL профили с QOpenGLFunctions_X_X_profile включают файлы, такие как:

#include <QOpenGLFunctions _4_3_core> 

Чтобы использовать эту более высокую версию OpenGL вы также необходимо предоставить совместимую QSurfaceFormat вашему QOpenGLWidget.