【问题标题】:Quartz2d vector images vs OpenGL vector description?Quartz2d 矢量图像与 OpenGL 矢量描述?
【发布时间】:2010-05-20 02:26:19
【问题描述】:

Quartz2d 的描述语言与 OpenGL ES 的区别有多大?

看起来它们在描述能力上是相似的......除了 Quartz 主要是 2d 并且 OpenGL 是开箱即用的 3d(但可以专注于 2d)。

从 2dQuartz 到 2d OpenGL ES 的映射有什么不同吗?我确定某些特定功能肯定存在差异,这些功能可能会以不同的方式处理……但是要做翻译?

任何对 OpenGL 和 Quartz2d 都有经验的人有一些见解吗?

【问题讨论】:

    标签: iphone opengl-es quartz-graphics


    【解决方案1】:

    Quartz 和 OpenGL ES 是两种完全不同的动物。虽然它们都有一个基于 C 的 API 来处理状态机并绘制到上下文中,但它们的目的是不同的。在 Quartz 中,您可以指定线条、贝塞尔曲线和二次曲线、圆弧或矩形,以及填充、渐变和阴影/发光。在 OpenGL ES 中,您提供顶点、光栅纹理和照明信息,从中生成场景。

    它们在特定情况下都很有用。您可以使用 Quartz 将 2-D 静态元素绘制到视图、图层或纹理中,然后使用 Core Animation 在 3-D 空间中放置和移动该视图或图层,或者使用 OpenGL ES 对纹理执行相同操作。

    与其尝试将一个 API 叠加在另一个 API 上,不如使用更适合您正在做的事情的 API,或者寻找像 cocos2d 这样的框架,它可以让您构建和动画化 2-D 场景或 Core Animation将 Quartz 绘制到一个层中,但仍然使用一个很好的抽象 API 来移动这些层。

    【讨论】:

    • Cocos 似乎只处理精灵...我正在从矢量编辑程序中寻找矢量能力和传输(如果可能的话,动画也是如此)似乎 Quartz2d 和 OpenGL ES 之间已经有一个翻译层,因为无论如何,这一定是石英被放置到视图中的方式。我找到了一条可以让我从矢量应用程序 ( flash ) 到 Quartz 2d 的途径...我也想获取动画数据并让它尽可能接近硬件级别。
    • @tbarbe - 是的,您使用 Quartz 绘制矢量 2-D 内容,然后将其光栅化为核心动画层,该层实际上是矩形 OpenGL ES 纹理的包装器。使用 Quartz 绘图和 Core Animation 将为您提供所需的矢量绘图和动画,并且只需要最少的代码。降级到 OpenGL ES 可以获得更好的性能,但这需要更多的代码或使用像 cocos2d 这样的框架。
    猜你喜欢
    • 1970-01-01
    • 2010-10-05
    • 2017-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-29
    相关资源
    最近更新 更多