我想在 OpenGL 游戏中使用矢量图形。我想使用矢量图形,因为它们可以廉价地缩放而不会降低质量。
当然,绘图应该是硬件加速的,所以我不想在软件中绘制纹理。
现在我想知道是否已经存在这样做的库。是否有一个库可以加载某些矢量图形格式并使用 OpenGL 显示它?
最佳答案
我不会为任何 OpenVG 烦恼,甚至不会为 MonkVG 烦恼,MonkVG 可能是最现代的,尽管不完整的实现。 OpenVG 委员会已于 2011 年解散,大多数(如果不是全部)实现都是废弃软件或最多是遗留软件。
自 2011 年以来,最先进的技术是 Mark Kilgard 的宝贝,NV_path_rendering,它目前只是一个供应商 (Nvidia) 扩展,正如您可能已经从其名称中猜到的那样。这方面有很多 Material :
- https://developer.nvidia.com/nv-path-rendering Nvidia 中心,但登陆页面上的某些 Material 不是最新的
- http://developer.download.nvidia.com/devzone/devcenter/gamegraphics/files/opengl/gpupathrender.pdf Signgraph 2012 论文
- http://on-demand.gputechconf.com/gtc/2014/presentations/S4810-accelerating-vector-graphics-mobile-web.pdf GTC 2014 演示
- http://www.opengl.org/registry/specs/NV/path_rendering.txt官方扩展文档
NV_path_rendering 现在由 Google 的 Skia 库(如果可用)在幕后使用。 (Nvidia 在 2013 年底和 2014 年贡献了代码。)
为了回答评论中提出的更具体的问题,您可以将路径渲染与其他 OpenGL (3D) 内容混合,如演示所示:
您当然可以加载 SVG 等 https://www.youtube.com/watch?v=bCrohG6PJQE 。它们还支持路径的 PostScript 语法。
一个 Upstart 是NanoVG,它的供应商支持更少(或根本没有),目前正在开发和维护。 ( https://github.com/memononen/nanovg ) 考虑到随着时间的推移,基于 OpenGL 的 2D 库的数量不断出现和消失,以我的拙见,您在使用不受主要供应商支持的东西上下了很大的赌注。
关于opengl - OpenGL 的 2D 矢量图形渲染器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4054612/