Мы переносим наш проект с Qt 4.8 на 5.4. Мы используем несколько контекстов в нескольких потоках. Для этой цели мы используем GLEW MX (мы делаем нужный контекст текущим, а затем вызываем glewInit() для локального экземпляра GLEWContextStruct).
Я пытаюсь изменить QGLWidget и QGLContext на QOpenGLWidget и QOpenGLContext, но в итоге больше не могу инициализировать glew. GLEW не возвращает ошибку, но возвращает glGetError().
Я установил Qt 5.4 64 с версией OpenGL.
Вот код, сокращенный до минимума:
#include <QtWidgets/QApplication>
#define GLEW_MX
#define GLEW_STATIC
#include <GL/glew.h>
#include <qopenglcontext.h>
#include <qwindow.h>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
bool errQt;
int errGlew;
GLenum errorGL;
QSurfaceFormat requestedFormat;
requestedFormat.setVersion(3, 3);
requestedFormat.setProfile(QSurfaceFormat::OpenGLContextProfile::CoreProfile);
//Creates the QGLWidget using the current context:
QWindow window;
window.setSurfaceType(QSurface::OpenGLSurface);
window.setFormat(requestedFormat);
window.create();
//Create context
QOpenGLContext context;
context.setFormat(requestedFormat);
errQt = context.create(); //true
//Bind context
context.makeCurrent(&window);
//Glew context creation
GLEWContext* pCtx = new GLEWContext; //All forwards undefined
//Release context
context.doneCurrent();
return 1;
}
Любое предложение ? Подходит ли GLEW для Qt5.4?
РЕДАКТИРОВАТЬ 1:
Похоже, проблема не связана с Qt. Созданный GLEWContext не имеет функции, определенной вперед (все указатели функций не определены). Код был обновлен, чтобы помочь рецензенту не терять фокус.