#include "qglengine_core_export.h" #include #include class QPainter; class QOpenGLContext; class QOpenGLPaintDevice; class QGLENGINE_CORE_EXPORT 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; } int pixelWidth() const; int pixelHeight() const; 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; };