【问题标题】:Cross platform 2D Vector + Raster API + hardware accelerated - does this exist?跨平台 2D 矢量 + 光栅 API + 硬件加速 - 这存在吗?
【发布时间】:2026-02-06 03:05:01
【问题描述】:

要求:

  • 保留图形模式 API
  • 仅适用于 2D 对象(尽管这些 2D 对象的 3D 变换很有趣)
  • 跨平台
  • 矢量图形绘制
  • 光栅合成 + 支持不透明蒙版 - 当然是硬件加速...
  • 动画 API
  • 封装大小 - 可以在嵌入式环境中运行吗?

这不是针对游戏的,但我并不反对使用游戏类型 API。

一些想法:

Qt 可能太重了,但我对 API 不够熟悉,不知道它是否满足要求。我对 Qts 窗口管理(没有窗口)或小部件/控件集不感兴趣,因为它不适用于桌面类型的应用程序。另外,我不确定Qt是否有动画框架?有什么想法吗?

这很可能是一个建立在 OpenGL 之上的框架。我只是不知道这样的事情是否存在。另外,我不清楚 OpenGL 中的 2D 图形。 2D 图形是真正的 2D 还是只是绘制在面向 2D 的平面上的 3D 对象?

WPF 之于 DirectX 就像 _____________ 之于 OpenGL

如果可以填补空白,那就是我正在寻找的。​​p>

更新 #2

这个周末我花了一些时间在 Qt 上,发现了 QGraphicsScene 类——这似乎是 Qt 的 2D 保留类型图形模式的基础类——以及 QGraphicsWidget,它允许 QWidget 类的一些自动布局功能。

Qt 即将通过我的试金石。最后要弄清楚的一件事是在处理矢量图像时,一个优秀的设计师到开发人员的工作流程,即,我如何获取在 Illustrator 中创建的图标并将其转换为 QGraphicsItem - 这可能是新的(更专注)的一个很好的候选者问题。

【问题讨论】:

    标签: wpf user-interface qt opengl


    【解决方案1】:

    您可能想查看Cairo,它有一个 OpenGL 后端。不过我认为它没有动画 API。

    【讨论】:

    • 哇。在他们的网站上看到的开罗渲染的清晰度给我留下了深刻的印象。但是,他们的路线图似乎与我的项目目标不一致。我对高质量的 PDF 输出或打印不感兴趣。纯粹的 2D 速度和流畅的动画是我所追求的。
    • Cairo 也可以用于动画渲染。查看此页面上的视频:cairographics.org/OpenGL
    【解决方案2】:

    关于使用Qt。

    在任何有意义的意义上它都不是重量级的。动态库只有几兆,图形操作我相信是相当优化的。

    它没有使用 OpenGL 加速的稳定版本 -- 这是 Qt4.5 中的版本。

    它确实使用 XRender 或其他东西,用于 2D 加速

    它还有一个很棒的绘图 API 和一个动画 API(用于简单事物的 QTimeLine 以及最近更强大的 QtAnimation)

    【讨论】:

    • 所以我的意思是重量级可能只是我对 Qt 的感知问题 - 我想我需要更多地了解它的模块化性质,但我对 Qts 窗口/X11 不感兴趣功能,或者 Qt 附带的一长串小部件/控件。
    • 这是一个无用的极简主义的问题。 Qt 有很多东西,小部件,网络,xml,你可能需要的一切。如果您不需要它,请不要使用它,没有必要为它烦恼。
    【解决方案3】:

    虽然 OpenGL 是一款出色的 3D 渲染工具,但重要的是要了解,最终输出媒体本质上是 2D。对 3 维的感知是通过视觉线索实现的,例如照明、远处物体看起来比近处物体小、近处物体遮挡远处物体。

    这些视觉线索在图形管道的各个阶段被实现为计算。光照和着色、视口变换和深度查询是用于创建 3D 幻觉的一些操作。

    将 OpenGL 用于 2D 时,可以忽略许多通常用于 3D 渲染的管线操作。由于减少了计算,这可以提高性能,并具有简化源代码的额外好处。还有一些专门用于 2d 栅格的操作,例如绘制精灵。

    与其将 2D 渲染视为一组简化的 3D 渲染,我建议您将 3D 渲染视为精心构建的 2D 元素的结果。

    【讨论】:

      【解决方案4】:

      WPF 也是 3D 的。该库经过调整和设计以简化 2D,但其中也包含所有 3D 转换。

      【讨论】:

      • 是的,我可能应该更清楚。对 2D 对象的 3D 转换很感兴趣(通常称为 2.5D),但我对 3D 对象不感兴趣。我会对可以应用于任何 2D 对象的 4x4 矩阵感到满意。