- AGG (Anti-Grain Geometry)是用于 C++ 的高质量渲染引擎。
- OpenGL ES是一种免版税的跨平台 API,用于嵌入式系统上的全功能 2D 和 3D 图形。
但是 AGG 在地图渲染方面似乎比 OpenGL ES 更有效,就像Mapnik使用 AGG 一样。
Q1: Mapbox-GL为什么不使用 AGG 而使用 OpenGL?
Q2: AGG 和 OpenGL ES 有什么区别?
谢谢!:)
OpenGL 是一种 API,用于管理 GPU 上的缓冲区并指定函数以在它们之间映射数据;最初用于渲染 3d 几何图形,它仍然主要围绕该目标。这是一个具有 25 年历史的开放标准,所有主要供应商都在所有主要操作系统上实施,其中一部分现在甚至被纳入符合标准的 Web 浏览器中。
Anti-Grain Geometry 是来自单一供应商的基于 CPU 的 2d 光栅化库,似乎在 2001 年左右开始,自 2007 年以来没有看到任何网页更新。其邮件列表的最新帖子是关于其破碎状态的到各种独立的下游补丁。
开发人员可能更喜欢 AGG 而不是 OpenGL,因为后者的级别非常低,而且对开发人员不是特别友好。除非您付出努力并且调试工具通常很差,否则它提供的很少。前者似乎是一个高级库,由于它在 CPU 上运行,因此适合您的正常调试器。
然而,AGG 没有加速,没有明确的所有权或未来,没有治理论坛,也没有广泛使用。
关于 Q1 和 Q2:
OpenGL/-ES 通常是 GPU 加速的(事实上,在大多数支持 OpenGL-ES 的平台上,OpenGL-ES 只有在 GPU 存在时才可用)。AGG 是一个软件光栅化器。
因此,如果存在 GPU,如果打算为交互式(实时)显示生成输出,则使用 OpenGL/-ES 通常会更有效/性能更高。