#include #include class QPainter; class QOpenGLContext; class QOpenGLPaintDevice; class OpenGLWindow : public QWindow , public QOpenGLExtraFunctions { Q_OBJECT public: explicit OpenGLWindow(QWindow * parent = nullptr); virtual ~OpenGLWindow() {} virtual void render() {} virtual void initialize() {} QOpenGLContext * context() { return m_context; } void setVSync(bool on); bool getVSync() const; // void setSamples(int samples); // int getSamples() const; int getFrameCounter() const { return frame_cnt; } public slots: void renderLater(); void renderNow(); protected: bool event(QEvent * event) override; void exposeEvent(QExposeEvent * event) override; private: QOpenGLContext * m_context = nullptr; bool format_change = false; int frame_cnt = 0; };