Мне нужны общие данные (текстуры, буферы вершин и т. Д.) Для всех виджетов OpenGL в приложении.
Следующий код не работает:
Я нашел несколько решений, в которых один главный QGLWidget
, а другие созданы с использованием этого основного виджета. К сожалению, я не могу использовать этот подход, потому что все мои QGLWidget равны и почти наверняка первый (основной) созданный QGLWidget будет уничтожен раньше других.
Возможный подход:
- единый общий контекст OpenGL между всеми QGLWidgets
- не работает: только один виджет QGLWidget отображается правильно, другие ведут себя так, как если бы они не отображались, поврежденные / случайные данные
ошибка для каждой
QGLWidget
конструкции, кроме первой:QGLWidget::setContext: Context must refer to this widget
Другой подход:
- основной контекст OpenGL и создать подконтекст для каждого QGLWidget
- не работает:
context->isSharing()
возвращаетfalse
код, который я использую для создания контекста,
context1
иcontext2
позже передаются конструкторам QGLWidgets:QGLContext *mainContext = new QGLContext(format), *context1, *context2; mainContext->create(); context1 = new QGLContext(format); context1->create(mainContext); context2 = new QGLContext(format); context2->create(mainContext); cout << mainContext->isSharing() << " " << context1->isSharing() << endl;
glClear ( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT )
не был выполнен - person kravemir   schedule 06.01.2014makeCurrent
метод, который должен решить эту проблему. - person Andon M. Coleman   schedule 06.01.2014