В моем приложении я пытаюсь реализовать несколько окон просмотра, чтобы позволить пользователю просматривать сцену с разных точек зрения. Каждый из моих окон просмотра должен иметь возможность переключения между каркасом, затенением, освещением и т. Д. В настоящее время я могу выполнять рендеринг с разных точек зрения в каждом окне просмотра, но у меня есть проблемы.
Когда я пытаюсь установить различные настройки, такие как glPolygonMode () или же qglClearColor () в любой видовой экран, эти настройки кажется, относятся только к один видовой экран, как правило, самый последний видовой экран, который был создан. это не проблема сигналов / слотов, поскольку эти соединения обрабатываются внутри каждого виджета и не могут быть перепутаны между виджетами.
Поскольку я использую Qt в качестве библиотеки для управления всеми связанными с пользовательским интерфейсом вещами, я уверен, что Qt позаботился о многих вещах для создания и настройки каждого экземпляра OpenGL для меня, поэтому могут быть вещи, которые я ‘ м с видом, о котором я не знаю.
Я проверил конструкторы, доступные для QGLWidgets, и увидел, что QGLWidget может принимать другой QGLWidget как «sharedwidget», а также объект QGLContext.
ASSERT: «QOpenGLFunctions :: isInitialized (d_ptr)» в файле
C: \ работа \ сборка \ qt5_workdir \ ш \ s \ qtbase \ включить \ QtGui ../../ SRC / GUI / OpenGL / qopenglfunctions.h,
линия 2018
В настоящее время мое приложение имеет следующую иерархию:
Единственное, что нужно предоставить каждому QGLWidget, — это указатель на текущую «карту», чтобы каждый мог отобразить карту на основе любых настроек, заданных в экземпляре этого конкретного виджета.
Я выполняю следующие функции для настройки области просмотра:
ASSERT: «false» в файле qgl.cpp, строка 122
Возможно ли даже иметь отдельные QGLWidgets с разными «polygonMode» или «clearColor»? Я просто волнуюсь, что делаю что-то не так, что позже укушу меня в задницу, чего я хочу избежать.
Задача ещё не решена.