#pragma once #include #include namespace PD { struct GfxCitro3DConfig { // Vertex Allocator template using VertexAlloc = LinearAllocator; // Index Allocator template using IndexAlloc = LinearAllocator; static constexpr size_t NumVertices = 32768; // 8192*4 static constexpr size_t NumIndices = 49152; // 8192*6 }; class GfxCitro3D : public GfxDriverBase { public: GfxCitro3D() : GfxDriverBase("Citro3D") {} ~GfxCitro3D() {} void SysInit() override; void SysDeinit() override; void Submit(size_t count, size_t start) override; void BindTexture(TextureID id) override; void SysReset() override; Li::Texture LoadTexture( const std::vector& pixels, int w, int h, TextureFormat type = TextureFormat::RGBA32, TextureFilter filter = TextureFilter::Linear) override; void DeleteTexture(const Li::Texture& tex) override; private: struct Impl; Impl* impl = nullptr; }; } // namespace PD