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:
@@ -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())->
|
||||
|
||||
Reference in New Issue
Block a user