#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; };