1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- #ifndef OSGQOPENGLWIDGET_H
- #define OSGQOPENGLWIDGET_H
- #ifdef __APPLE__
- # define __glext_h_
- # include <QtGui/qopengl.h>
- # undef __glext_h_
- # include <QtGui/qopenglext.h>
- #endif
- #include <osgQOpenGL/Export>
- #include <OpenThreads/ReadWriteMutex>
- #ifdef WIN32
- //#define __gl_h_
- #include <osg/GL>
- #endif
- #include <osg/ArgumentParser>
- #include <QOpenGLWidget>
- #include <QOpenGLFunctions>
- #include <QReadWriteLock>
- class OSGRenderer;
- namespace osgViewer
- {
- class Viewer;
- }
- class OSGQOPENGL_EXPORT osgQOpenGLWidget : public QOpenGLWidget,
- protected QOpenGLFunctions
- {
- Q_OBJECT
- protected:
- OSGRenderer* m_renderer {nullptr};
- bool _osgWantsToRenderFrame{true};
- OpenThreads::ReadWriteMutex _osgMutex;
- osg::ArgumentParser* _arguments {nullptr};
- bool _isFirstFrame {true};
- friend class OSGRenderer;
- public:
- osgQOpenGLWidget(QWidget* parent = nullptr);
- osgQOpenGLWidget(osg::ArgumentParser* arguments, QWidget* parent = nullptr);
- virtual ~osgQOpenGLWidget();
- /** Get osgViewer View */
- virtual osgViewer::Viewer* getOsgViewer();
- //! get mutex
- virtual OpenThreads::ReadWriteMutex* mutex();
- signals:
- void initialized();
- protected:
- //! call createRender. If overloaded, this method must send initialized signal at end
- void initializeGL() override;
- void resizeGL(int w, int h) override;
- //! lock scene graph and call osgViewer::frame()
- void paintGL() override;
- //! called before creating renderer
- virtual void setDefaultDisplaySettings();
- void keyPressEvent(QKeyEvent* event) override;
- void keyReleaseEvent(QKeyEvent* event) override;
- void mousePressEvent(QMouseEvent* event) override;
- void mouseReleaseEvent(QMouseEvent* event) override;
- void mouseDoubleClickEvent(QMouseEvent* event) override;
- void mouseMoveEvent(QMouseEvent* event) override;
- void wheelEvent(QWheelEvent* event) override;
- void createRenderer();
- private:
- };
- #endif // OSGQOPENGLWIDGET_H
|