void OsmAnd::AtlasMapRendererDebugStage_OpenGL::releaseLines2D()
{
    const auto gpuAPI = getGPUAPI();

    GL_CHECK_PRESENT(glDeleteBuffers);
    GL_CHECK_PRESENT(glDeleteProgram);

    if(_iboLine2D)
    {
        glDeleteBuffers(1, &_iboLine2D);
        GL_CHECK_RESULT;
        _iboLine2D.reset();
    }
    if(_vboLine2D)
    {
        glDeleteBuffers(1, &_vboLine2D);
        GL_CHECK_RESULT;
        _vboLine2D.reset();
    }
    if(_vaoLine2D)
    {
        gpuAPI->glDeleteVertexArrays_wrapper(1, &_vaoLine2D);
        GL_CHECK_RESULT;
        _vaoLine2D.reset();
    }
    if(_programLine2D.id)
    {
        glDeleteProgram(_programLine2D.id);
        GL_CHECK_RESULT;
        _programLine2D = ProgramLine2D();
    }
}
bool OsmAnd::AtlasMapRendererDebugStage_OpenGL::releaseLines2D()
{
    const auto gpuAPI = getGPUAPI();

    GL_CHECK_PRESENT(glDeleteBuffers);
    GL_CHECK_PRESENT(glDeleteProgram);

    if (_vaoLine2D.isValid())
    {
        gpuAPI->releaseVAO(_vaoLine2D);
        _vaoLine2D.reset();
    }
    
    if (_iboLine2D.isValid())
    {
        glDeleteBuffers(1, &_iboLine2D);
        GL_CHECK_RESULT;
        _iboLine2D.reset();
    }
    if (_vboLine2D.isValid())
    {
        glDeleteBuffers(1, &_vboLine2D);
        GL_CHECK_RESULT;
        _vboLine2D.reset();
    }
    
    if (_programLine2D.id.isValid())
    {
        glDeleteProgram(_programLine2D.id);
        GL_CHECK_RESULT;
        _programLine2D = ProgramLine2D();
    }

    return true;
}