为什么要使用CoreGraphics而不是SpriteKit?

9

SpriteKit在GPU上运行效率很高。

CoreGraphics在CPU上运行。

我想不出任何CoreGraphics能做而SpriteKit不能做的绘图。

考虑到这一点,你能列举出为什么有些人可能仍然希望在新应用中更喜欢CoreGraphics吗?


1
我知道SO对“主观”问题和“基于意见”的答案有奇怪的政策,但如果你说“在这两个选择(SpriteKit和Core Image)之间,哪一个最适合... ABC,因为它们在许多方面都是不同的,只有在某些方面是互补的,你可能会得到一些好的答案。在它被关闭之前,因为“离题”。或者也许足够多的人会意识到,在仅有两个框架的范围内,ABC并不真正是意见,事实可以显示最佳/正确的客观性。 - Confused
1
SpriteKit的优点在于它是建立在OpenGL/Metal之上的,速度非常快。使用SpriteKit可以更轻松地创建2D游戏,而CoreGraphics是一个较低级别的2D图形API,更通用,与游戏和交互没有直接关系。 - MoDJ
1个回答

19
"It's not an 'either or' question, because there are disparities in their abilities."
"这不是一个二选一的问题,因为它们的能力存在差异。"
"Core Graphics可以制作非常复杂的图像,具有极其复杂的层次结构和不同效果和内容的叠加。但最重要的是,它非常擅长以其他iOS框架无法匹敌的质量绘制形状和线条。正如苹果所说:"
“Core Graphics…提供低级别、轻量级的2D渲染,输出保真度无与伦比。您可以使用此框架处理基于路径的绘图、变换、颜色管理、离屏渲染、模式、渐变和阴影、图像数据管理、图像创建和图像遮罩,以及PDF文档的创建、显示和解析。”

https://developer.apple.com/reference/coregraphics

您在SpriteKit中找不到PDF导出创建、图像创建(纹理创建可以,但不包括图像创建)、复杂渐变、颜色管理、复杂的图案、变换和带有上下文的离屏渲染。同样,在SpriteKit中也找不到Core Graphics中的抗锯齿效果。
如果您想将图像制作集成到UIKit应用程序中,最好使用Core Graphics、Core Image和Core Animation的混合方式,而不是尝试在应用程序中使用SpriteKit进行这种图像创建和动画。
使用SpriteKit适用于适当受益于精灵作为主要图形内容的游戏。
例如,您可以选择使用Core Animation和Core Graphics来制作更具动态性的内容或对编程创建的内容提出更高质量需求的游戏,而不仅仅是使用SpriteKit。或者,您可以使用Core Graphics以更高质量地制作精灵的内容,这比您从SKShapeNode中得到的要好得多。
所以…因人而异。
基本上有以下几种情况:
A)精灵和简单的2D渲染和绘制
B)各种图形、动态绘制和更高的质量和输出类型要求

C)两者的混合

你的知识令人惊叹。如果你有时间的话,我已经发布了一个相关问题:https://dev59.com/1p7ha4cB1Zd3GeqPfS2P。谢谢。 - code-ninja-54321
2
@code-ninja-54321 不要再让他的自尊心膨胀了...他的头已经快要爆炸了。 - Fluidity

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