Extra2D/include/renderer/rhi/rhi_shader.h

87 lines
1.6 KiB
C++

#pragma once
#include <renderer/rhi/rhi_types.h>
#include <string>
namespace extra2d {
/**
* @brief RHI 着色器接口
*
* 抽象 GPU 着色器程序
*/
class RHIShader {
public:
virtual ~RHIShader() = default;
/**
* @brief 获取着色器类型
* @return 着色器类型
*/
virtual ShaderType getType() const = 0;
/**
* @brief 检查是否已编译
* @return 是否已编译
*/
virtual bool isCompiled() const = 0;
/**
* @brief 获取编译日志
* @return 编译日志
*/
virtual std::string getCompileLog() const = 0;
/**
* @brief 检查是否有效
* @return 是否有效
*/
virtual bool isValid() const = 0;
};
/**
* @brief RHI 图形管线接口
*
* 抽象 GPU 图形管线状态对象 (PSO)
*/
class RHIPipeline {
public:
virtual ~RHIPipeline() = default;
/**
* @brief 绑定管线
*/
virtual void bind() = 0;
/**
* @brief 解绑管线
*/
virtual void unbind() = 0;
/**
* @brief 获取顶点着色器
* @return 顶点着色器
*/
virtual ShaderHandle getVertexShader() const = 0;
/**
* @brief 获取片段着色器
* @return 片段着色器
*/
virtual ShaderHandle getFragmentShader() const = 0;
/**
* @brief 获取顶点布局
* @return 顶点布局
*/
virtual const VertexLayout& getVertexLayout() const = 0;
/**
* @brief 检查是否有效
* @return 是否有效
*/
virtual bool isValid() const = 0;
};
} // namespace extra2d