87 lines
1.6 KiB
C++
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
|