// GLData.h
#ifndef GLDATA_H
#define GLDATA_H

#include <string>
#include <vector>
#include <memory>
#include <unordered_map>
#include <stdexcept>

// GLData 类
class GLData {
public:
    int shader;
    std::string uniforms;
    double width;
    double height;
    double pixelRatio;
    int fboId;
    std::vector<std::shared_ptr<GLData>> contextChildren;
    std::vector<std::shared_ptr<GLData>> children;

    GLData(){}
    GLData(int shader, std::string uniforms, int width, int height, double pixelRatio, int fboId,
           const std::vector<std::shared_ptr<GLData>>& contextChildren, const std::vector<std::shared_ptr<GLData>>& children)
        : shader(shader), uniforms(uniforms), width(width), height(height), pixelRatio(pixelRatio), fboId(fboId),
          contextChildren(contextChildren), children(children) {}
    ~GLData(){}
};

class OnProgressData {
public:
    int count;
    int total;
    double progress;
    OnProgressData(int count, int total, double progress) : count(count), total(total), progress(progress) {}
};

#endif //GL_REACT_NATIVE_DEMO_GLDATA_H
