CoreGraphics替代方案?

3
我正在寻找一款2D渲染库,作为iPhone上CoreGraphics的替代品。我的应用程序中的所有内容都非常动态,这使得将事物分成图层和动画变得相当困难。
我非常熟悉OpenGL,并且目前就是使用它来实现渲染的。如果我不必担心OpenGL低级问题的话,一切都会更容易扩展,开发速度也会更快(而且我的代码看起来也会更整洁:D)。
我更喜欢C++而不是Objective-C,所以如果你知道任何用于渲染的C++库,那就太好了。我也可以使用C。基于路径的渲染,例如在CoreGraphics或JavaScript Canvas API中,会很有益。Cairo能在iPhone上使用吗?
实际上,我一直在开发自己的2D渲染器,即使我最终不使用它在我的应用程序中,我也可能会发布它,因为我喜欢在上面工作。iPhone支持模板缓冲区吗?我可以进行多边形三角剖分,或者使用GLU的tesselation库,但模板缓冲区会节省大量工作。
另外,我之前已经使用CoreGraphics在此应用程序中实现了渲染,但帧速率并不如我所希望的那样好。我进行了一些研究,人们建议不要在不断重绘屏幕的情况下使用CoreGraphics。有些人说CoreGraphics不使用GPU,有些人说它是某种缓存机制。自那以后,我就一直避免使用它了。

出于好奇,您不想使用核心图形的原因是什么?只是因为它绘制到层中的事实吗? - Brad Larson
哦,对了。我忘记在我的帖子中加上那个了... - vedosity
4
是的,Core Graphics可以呈现矢量图形并将其缓存为在GPU上的矩形纹理。这个渲染过程相当缓慢,但我认为除了完全使用OpenGL ES库的情况下,你不会找到比苹果更好的性能。作为权宜之计,您是否考虑过CAShapeLayer,它可以动画显示矢量图形:http://tumbljack.com/post/179975074/complex-interpolation-with-cashapelayer-free? - Brad Larson
@Brad 我之前用过CAShapeLayers,但不是用于我的应用程序的这个部分。也许我很快会尝试一下。我的担心是很多对象将在每帧基础上改变颜色,我担心为同样的原因在每帧调用setNeedsDisplay。由于物理效果不可预测,我可能也不能使用动画,但我不知道这对性能会有什么影响。我想这可能并不重要。 - vedosity
1个回答

1

MonkVG是一个类似于OpenVG 1.1的矢量图形API实现,目前使用OpenGL ES后端,应该与支持OpenGL ES 2.0的大多数iOS和Android设备兼容。

这是一个开源的BSD许可项目,正在积极开发中。在撰写本文时,它处于非常早期的预发布状态(只实现了非常少量的功能)。欢迎贡献者和赞助商。

它可以在GitHub上找到 http://github.com/micahpearlman/MonkVG

此外,还有基于MonkVG构建的SVG和SWF(flash)渲染器:

MonkSVG MonkSWF


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接