Qt 5.3.2への依存性をQt 5.6にアップグレードした後、VTKレンダリングはもはや機能しません。VTK 7&Qt5.6 OSX 10.11でのOpenGLレンダリングの競合
#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();
}
私は単純にはQt 5.6のためQOpenGLWidgetにQGLWidgetを更新:ここで
は5.3.2コードです
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ビューと同時に表示されないQWebEngineで置き換えた後に表示されます)。しかし、私がQWebEngineViewを表示するとすぐに、私のアプリのすべてのVTKビューが機能しなくなります。お時間を
感謝:)
制限がどのようにVTKに影響を与えているのかを知ることは非常に面白いです。 – peppe
私はドキュメントの間違った部分をリンクしていたことを指摘してくれてありがとうございます。私は、QOpenGLWidgetを使用したくないのです。なぜなら、合成は問題を引き起こしているようだし、UIを混乱させるからです。投稿が更新されました。 – noKid