Various fixes:

+ disable VBO rendering in split views
+ activate multi-sampling in split view for manual alignment
+ share GL widget in case a document has multiple views to make VBO rendering work correctly
This commit is contained in:
wmayer
2017-09-23 11:14:41 +02:00
parent 3e7dad49e2
commit 5604e64f54
6 changed files with 89 additions and 66 deletions

View File

@@ -340,12 +340,37 @@ public:
AlignmentView(Gui::Document* pcDocument, QWidget* parent, Qt::WindowFlags wflags=0)
: AbstractSplitView(pcDocument, parent, wflags)
{
//anti-aliasing settings
bool smoothing = false;
bool glformat = false;
int samples = View3DInventorViewer::getNumSamples();
QtGLFormat f;
if (samples > 1) {
glformat = true;
#if !defined(HAVE_QT5_OPENGL)
f.setSampleBuffers(true);
#endif
f.setSamples(samples);
}
else if (samples > 0) {
smoothing = true;
}
QSplitter* mainSplitter=0;
mainSplitter = new QSplitter(Qt::Horizontal, this);
_viewer.push_back(new View3DInventorViewer(mainSplitter));
_viewer.back()->setDocument(pcDocument);
_viewer.push_back(new View3DInventorViewer(mainSplitter));
_viewer.back()->setDocument(pcDocument);
if (glformat) {
_viewer.push_back(new View3DInventorViewer(f, mainSplitter));
_viewer.back()->setDocument(pcDocument);
_viewer.push_back(new View3DInventorViewer(f, mainSplitter));
_viewer.back()->setDocument(pcDocument);
}
else {
_viewer.push_back(new View3DInventorViewer(mainSplitter));
_viewer.back()->setDocument(pcDocument);
_viewer.push_back(new View3DInventorViewer(mainSplitter));
_viewer.back()->setDocument(pcDocument);
}
QFrame* vbox = new QFrame(this);
QVBoxLayout* layout = new QVBoxLayout();
@@ -374,6 +399,11 @@ public:
// apply the user settings
setupSettings();
if (smoothing) {
for (std::vector<int>::size_type i = 0; i != _viewer.size(); i++)
_viewer[i]->getSoRenderManager()->getGLRenderAction()->setSmoothing(true);
}
static_cast<SoGroup*>(getViewer(0)->getSoRenderManager()->getSceneGraph())->
addChild(setupHeadUpDisplay(tr("Movable object")));
static_cast<SoGroup*>(getViewer(1)->getSoRenderManager()->getSceneGraph())->