#pragma once

#include <string>

/**
 * @brief 着色器抽象基类 (对应 Java Shader 接口)
 * 封装单个着色器（如顶点或片段着色器）的代码和名称。
 */
class Shader {
public:
    // 虚析构函数是基类的最佳实践
    virtual ~Shader() = default;

    /**
     * @brief 获取着色器的 GLSL 代码。
     * @return 包含 GLSL 代码的字符串。
     */
    virtual std::string getShaderCode() const = 0;

    /**
     * @brief 获取着色器的名称（用于日志和调试）。
     * @return 着色器名称字符串。
     */
    virtual std::string getShaderName() const = 0;
};