#ifndef yC_GLES32_Window_H
#define yC_GLES32_Window_H


#include <QWindow>
#include <QOpenGLContext>
#include <QOpenGLFunctions>
#include <QSurfaceFormat>

class Window : public QWindow, protected QOpenGLFunctions {
public:
  QOpenGLContext *context;
  bool initialized;

  Window() : context(nullptr), initialized(false) {
    setSurfaceType(OpenGLSurface);

    // 设置OpenGL ES版本（3.2）
    QSurfaceFormat format = QSurfaceFormat::defaultFormat();
    format.setMajorVersion(3);
    format.setMinorVersion(2);
    format.setProfile(QSurfaceFormat::CompatibilityProfile); // 设置为 OpenGL ES 配置

    setFormat(format);

    // 创建OpenGL上下文
    context = new QOpenGLContext();
    context->setFormat(format);
    context->create();
  }

  ~Window() override {
    delete context;
  }

  void exposeEvent(QExposeEvent *event) override {
    if (isExposed()) {
      // 激活OpenGL上下文
      context->makeCurrent(this);

      // 初始化OpenGL（如果还未初始化）
      if (!initialized) {
        initializeOpenGLFunctions();
        // 可以在这里做初始化工作，如创建VBO、着色器等
        initialized = true;
      }

      // 渲染
      render();

      // 刷新OpenGL渲染到屏幕
      context->swapBuffers(this);
    }
  }

private:
  void render() {
    // 在这里编写OpenGL ES渲染指令
    glClearColor(0.0f, 0.0f, 1.0f, 1.0f);  // 清除背景为蓝色
    glClear(GL_COLOR_BUFFER_BIT);  // 清空颜色缓冲
    // 更多OpenGL ES渲染指令...
  }
};


#endif