Mercurial > hg > orthanc-stone
diff Samples/Qt/QStoneOpenGlWidget.h @ 916:a911f5bb48da am-dev
MultiPlatform Basic Scene sample (so far: SDL + Qt)
author | Alain Mazy <alain@mazy.be> |
---|---|
date | Fri, 19 Jul 2019 15:06:36 +0200 |
parents | 9c2f6d6b9f4a |
children |
line wrap: on
line diff
--- a/Samples/Qt/QStoneOpenGlWidget.h Fri Jul 19 11:40:45 2019 +0200 +++ b/Samples/Qt/QStoneOpenGlWidget.h Fri Jul 19 15:06:36 2019 +0200 @@ -2,29 +2,45 @@ #include "../../Framework/OpenGL/OpenGLIncludes.h" #include <QOpenGLWidget> #include <QOpenGLFunctions> +#include <QOpenGLContext> #include <boost/shared_ptr.hpp> #include "../../Framework/OpenGL/IOpenGLContext.h" #include "../../Framework/Scene2D/OpenGLCompositor.h" -#include "../../Framework/Viewport/IViewport.h" +#include "../../Framework/Viewport/ViewportBase.h" #include "../../Applications/Generic/Scene2DInteractor.h" namespace OrthancStone { - class QStoneOpenGlWidget : public QOpenGLWidget, public OrthancStone::OpenGL::IOpenGLContext + class QStoneOpenGlWidget : + public QOpenGLWidget, + public OpenGL::IOpenGLContext, + public ViewportBase { - boost::shared_ptr<IViewport> viewport_; - boost::shared_ptr<OrthancStone::OpenGLCompositor> compositor_; + std::unique_ptr<OrthancStone::OpenGLCompositor> compositor_; boost::shared_ptr<Scene2DInteractor> sceneInteractor_; + QOpenGLContext openGlContext_; public: QStoneOpenGlWidget(QWidget *parent) : - QOpenGLWidget(parent) + QOpenGLWidget(parent), + ViewportBase("QtStoneOpenGlWidget") // TODO: we shall be able to define a name but construction time is too early ! { setFocusPolicy(Qt::StrongFocus); // to enable keyPressEvent setMouseTracking(true); // to enable mouseMoveEvent event when no button is pressed } + void Init() + { + QSurfaceFormat requestedFormat; + requestedFormat.setVersion( 2, 0 ); + openGlContext_.setFormat( requestedFormat ); + openGlContext_.create(); + openGlContext_.makeCurrent(context()->surface()); + + compositor_.reset(new OpenGLCompositor(*this, GetScene())); + } + protected: //**** QWidget overrides @@ -55,14 +71,15 @@ } public: + void SetInteractor(boost::shared_ptr<Scene2DInteractor> sceneInteractor) { sceneInteractor_ = sceneInteractor; } - void SetCompositor(boost::shared_ptr<OrthancStone::OpenGLCompositor> compositor) + virtual ICompositor& GetCompositor() { - compositor_ = compositor; + return *compositor_; } protected: