#pragma once #include #include namespace extra2d { /** * @brief OpenGL 缓冲区实现 */ class GLBuffer : public RHIBuffer { public: explicit GLBuffer(const BufferDesc &desc); ~GLBuffer() override; bool create(); void destroy(); bool update(const void *data, uint32_t size, uint32_t offset) override; void *map() override; void unmap() override; const BufferDesc &getDesc() const { return desc_; } uint32_t getSize() const override { return desc_.size; } BufferType getType() const override { return desc_.type; } bool isValid() const override { return buffer_ != 0; } GLuint getGLBuffer() const { return buffer_; } private: BufferDesc desc_; GLuint buffer_; }; } // namespace extra2d