#pragma once #include namespace PD { struct GfxOpenGL2Config { // Vertex Allocator template using VertexAlloc = std::allocator; // Index Allocator template using IndexAlloc = std::allocator; static constexpr size_t NumVertices = 32768; // 8192*4 static constexpr size_t NumIndices = 49152; // 8192*6 }; class GfxOpenGL2 : public GfxDriverBase { public: GfxOpenGL2() : GfxDriverBase("OpenGL2") {} ~GfxOpenGL2() {} void SysInit() override; void SysDeinit() override; void Submit(size_t count, size_t start) override; void BindTexture(TextureID id) override; void SysReset() override; TextureID LoadTexture(const std::vector& pixels, int w, int h, TextureFormat type = TextureFormat::RGBA32, TextureFilter filter = TextureFilter::Linear) override; void DeleteTexture(const TextureID& tex) override; private: void pSetupShaderAttribs(u32 shader); u32 pShader = 0; u32 VBO = 0; u32 IBO = 0; int pLocTex = 0; int pLocAlfa = 0; int pLocProjection = 0; static const char* pVertCode; static const char* pFragCode; }; } // namespace PD