После обновления моей Qt 5.3.2 зависимости от Qt 5.6 рендеринг VTK больше не работает.VTK 7 & Qt5.6 Конфликт рендеринга OpenGL в OSX 10.11
Вот 5.3.2 код:
#include <QtWidgets>
#include <QGLWidget>
#include <vtkActor.h>
#include <vtkPolyDataMapper.h>
#include <vtkRenderer.h>
#include <vtkSphereSource.h>
#include <QVTKWidget.h>
#include <vtkRenderWindow.h>
int main(int argc, char** argv){
// create QApplication
QApplication l_app(argc, argv);
// Create widget and layout
QWidget* l_main_widget = new QWidget;
QHBoxLayout* l_main_layout = new QHBoxLayout;
l_main_widget->setLayout(l_main_layout);
// create a QVtkWidget with a simple sphere inside
QVTKWidget* l_view = new QVTKWidget;
l_view->setFixedSize(300, 300);
vtkSmartPointer<vtkSphereSource> l_sphere_source = vtkSmartPointer<vtkSphereSource>::New();
vtkSmartPointer<vtkPolyDataMapper> l_sphere_mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
l_sphere_mapper->SetInputConnection(l_sphere_source->GetOutputPort());
vtkSmartPointer<vtkActor> l_sphere_actor = vtkSmartPointer<vtkActor>::New();
l_sphere_actor->SetMapper(l_sphere_mapper);
vtkSmartPointer<vtkRenderer> l_renderer = vtkSmartPointer<vtkRenderer>::New();
l_renderer->AddActor(l_sphere_actor);
l_view->GetRenderWindow()->AddRenderer(l_renderer);
l_main_layout->addWidget(l_view);
// create a QWebEngineView
QGLWidget* l_gl_widget = new QGLWidget;
l_main_layout->addWidget(l_gl_widget);
l_main_widget->show();
return l_app.exec();
}
Я просто обновил QGLWidget на QOpenGLWidget для Qt 5.6:
QOpenGLWidget* l_gl_widget = new QOpenGLWidget;
А теперь, мой QVTKWidget просто делает черное изображение (см конец почты). я уже вышел на this thread about making QVTKWidget inherits QOpenGLWidget, но я не могу позволить себе сделать это, из-за QOpenGLWidget & compositing
Я попытался создать подкласс QVTKWidget & некоторые из его методов (PaintEvent & сотрудничество.) Вручную управлять его рендеринг с использованием вещи, как vtkGenericOpenGLRenderWindow, но либо я сталкиваюсь с такими странными проблемами, которые я все еще пытаюсь решить, либо я недостаточно квалифицирован с ними.
В частности, при работе с QOpenGLContext & QSurfaceFormat, похоже, я не могу заставить их работать с OpenGL 3.2 (что требуется для поддержки VTK 7 OpenGL2). Кажется, что они застряли в версии 2.1.
Следует упомянуть, что у меня нет этой проблемы в Windows.
Если у вас есть подсказки или помощь, я с радостью соглашусь.
Последнее замечание: Эта проблема возникла после замены QWebKit на QWebEngine, которая используется в моем приложении, но никогда не отображается одновременно с представлением VTK. Тем не менее, как только я показываю QWebEngineView, все взгляды VTK моего приложения перестают работать.
Спасибо за ваше время :)
Было бы очень интересно узнать, как ограничения влияют на VTK, кстати ... – peppe
Спасибо, что указали, что я связывал неправильную часть документа. Я не хочу использовать QOpenGLWidget, потому что компоновка, похоже, вызывает проблемы и/или нарушает пользовательский интерфейс. Сообщение обновлено. – noKid