gl_view.h 872 B

12345678910111213141516171819202122232425262728293031323334353637
  1. #pragma once
  2. #include <QPointer>
  3. #include <QQuickFramebufferObject>
  4. class GameEngine;
  5. class GLView : public QQuickFramebufferObject {
  6. Q_OBJECT
  7. public:
  8. GLView();
  9. [[nodiscard]] auto createRenderer() const -> Renderer * override;
  10. Q_PROPERTY(QObject *engine READ engine WRITE set_engine NOTIFY engine_changed)
  11. [[nodiscard]] auto engine() const -> QObject *;
  12. void set_engine(QObject *eng);
  13. signals:
  14. void engine_changed();
  15. private:
  16. QPointer<GameEngine> m_engine;
  17. class GLRenderer : public QQuickFramebufferObject::Renderer {
  18. public:
  19. explicit GLRenderer(QPointer<GameEngine> engine);
  20. void render() override;
  21. auto createFramebufferObject(const QSize &size)
  22. -> QOpenGLFramebufferObject * override;
  23. void synchronize(QQuickFramebufferObject *item) override;
  24. private:
  25. QPointer<GameEngine> m_engine;
  26. QSize m_size;
  27. };
  28. };