Extra2D/include/renderer/rhi/opengl/gl_context.h

39 lines
810 B
C++

#pragma once
#include <renderer/rhi/rhi.h>
#include <glad/glad.h>
#include <memory>
namespace extra2d {
// 前向声明
class GLDevice;
class GLFramebuffer;
/**
* @brief OpenGL 上下文实现
*/
class GLContext : public RHIContext {
public:
explicit GLContext(GLDevice* device);
~GLContext() override;
bool initialize() override;
void shutdown() override;
void beginFrame() override;
void endFrame() override;
void setViewport(int32_t x, int32_t y, uint32_t width, uint32_t height) override;
void bindDefaultFramebuffer() override;
RHIFramebuffer* getDefaultFramebuffer() override;
bool isFeatureSupported(const char* feature) const override;
private:
GLDevice* device_;
std::unique_ptr<GLFramebuffer> defaultFramebuffer_;
};
} // namespace extra2d