【问题标题】:2D Vector graphic renderer for OpenGL [duplicate]OpenGL的2D矢量图形渲染器[重复]
【发布时间】:2023-03-21 06:58:01
【问题描述】:

我想在 OpenGL 游戏中使用矢量图形。我想使用矢量图形,因为它们可以廉价地缩放而不会损失质量。

当然,绘图应该是硬件加速的,所以我不想在软件中绘制纹理。

现在我想知道这样做的图书馆是否已经存在。有没有可以加载一些矢量图形格式并使用OpenGL显示的库?

【问题讨论】:

  • 除非作者同时要OpenGL+2D矢量图。
  • 让我试着澄清一下我想要什么。我想加载一个矢量图形文件(即 SVG),将我的普通 OpenGL 调用与绘制矢量图形文件的调用混合。我承认,其他线程部分回答了这些问题。
  • Josh Lee 所链接的问题恕我直言,无法复制此问题,甚至无法给出小册子大小的答案...
  • 另一方面,stackoverflow.com/questions/4129932/… 肯定是重复的。

标签: opengl vector-graphics


【解决方案1】:

我不会为任何 OpenVG 烦恼,即使是 MonkVG,它可能是最现代的,虽然不完整的实现。 OpenVG 委员会已于 2011 年解散,大多数(如果不是全部)实现都是废弃软件或充其量是遗留软件。

自 2011 年以来,最先进的是 Mark Kilgard 的宝贝 NV_path_rendering,它目前只是一个供应商 (Nvidia) 扩展,您可能已经从它的名称中猜到了。这方面的资料很多:

NV_path_rendering 现在由 Google 的 Skia 库在后台使用(如果可用)。 (Nvidia 在 2013 年末和 2014 年贡献了代码。)

为了回答 cmets 中提出的更具体的问题,您可以将路径渲染与其他 OpenGL (3D) 内容混合使用,如下所示:

您当然可以加载 SVG 等 https://www.youtube.com/watch?v=bCrohG6PJQE。它们还支持路径的 PostScript 语法。

目前正在开发和维护的NanoVG 是一个拥有更少(或完全没有)供应商支持或学术浮华的新贵。 (https://github.com/memononen/nanovg) 鉴于 OpenGL 上的 2D 库的数量随着时间的推移来来去去,在我看来,您正在押注使用主要供应商不支持的东西。

【讨论】:

    【解决方案2】:

    看看OpenVG

    【讨论】:

    • 谢谢。 OpenVG 看起来很酷。但我有点困惑。它只是一个标准,而不是一个库,对吧?是否存在适用于 Linux 和 Windows 的(开源)硬件加速实现?
    • 好吧。我认为有一个 Nvidia 实现。看这个帖子:Best OpenVG implementation?.
    【解决方案3】:

    关于 SVG 渲染器的大量讨论 in this Slashdot post。我不知道他们中的哪一个使用了 OpenGL,如果有的话。

    This SO question 也有一些建议,包括用 Python 完成的sauvageCairo 显然也是一种可能性。

    有几个强大的库可以在没有 OpenGL 的情况下渲染 SVG。我想知道这是否真的没有必要:也许在大多数系统的显卡上画线已经足够加速了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-14
      • 1970-01-01
      • 2018-08-10
      相关资源
      最近更新 更多