46 lines
1.0 KiB
C++
46 lines
1.0 KiB
C++
#pragma once
|
||
|
||
#include <renderer/rhi/rhi.h>
|
||
#include <glad/glad.h>
|
||
|
||
namespace extra2d {
|
||
|
||
// 前向声明
|
||
class GLShader;
|
||
|
||
/**
|
||
* @brief OpenGL 管线实现
|
||
*/
|
||
class GLPipeline : public RHIPipeline {
|
||
public:
|
||
explicit GLPipeline(const PipelineDesc& desc);
|
||
~GLPipeline() override;
|
||
|
||
bool create();
|
||
void destroy();
|
||
|
||
void bind() override;
|
||
void unbind() override;
|
||
|
||
ShaderHandle getVertexShader() const override;
|
||
ShaderHandle getFragmentShader() const override;
|
||
const VertexLayout& getVertexLayout() const override;
|
||
bool isValid() const override;
|
||
|
||
const PipelineDesc& getDesc() const { return desc_; }
|
||
GLuint getGLVAO() const { return vao_; }
|
||
|
||
// 获取 shader program ID(用于设置 uniform)
|
||
GLuint getGLProgram() const { return shaderProgram_; }
|
||
|
||
// 设置 shader program ID(在创建时调用)
|
||
void setGLProgram(GLuint program) { shaderProgram_ = program; }
|
||
|
||
private:
|
||
PipelineDesc desc_;
|
||
GLuint vao_;
|
||
GLuint shaderProgram_ = 0;
|
||
};
|
||
|
||
} // namespace extra2d
|