在iPhone上:
如果我正在编写一个具有多个级别的游戏,具有多个动画(图像序列),jpg和png(透明),一些全屏而一些不是,一些循环,一些只播放一次。这样做的最佳方式是什么?每个级别最多可能有10MB的图像。添加到此音乐和视频(剪切场景)。所有2D图形,没有3D模型。
是否需要OpenGL?或者这可以通过Quartz或Core Animation来实现吗?
答案 0 :(得分:8)
我使用UIViews和一些Core Graphics(Quartz 2D)做类似的工作,它运行正常。我发现Core Graphics中的自定义绘图将它推得更远,因此 - 当给定图像而不是必须绘制自己时,UIViews工作得最好。还要注意大量的透明胶片。不过,您可能会发现大型或长型(多帧)动画将成为杀手锏。有一些技术可以最大限度地减少动画的影响,如果没有立即显示,则允许它从内存中清除图像(我忘记了设置)。这可能会导致您的动画不像您原来那样流畅(不确定Open GL ES是否会对此有所帮助)。
您应该使用UIViews进行原型设计,然后决定是否值得为OpenGL ES做额外的工作。此外,如果您还不熟悉OpenGL / Open GL ES,那将是一个陡峭的学习曲线。
答案 1 :(得分:7)
我已经使用Quartz和OpenGL在iPhone上制作图形,虽然OpenGL具有更高的学习曲线,但它提供了比Quartz更好的性能。假设你有一个场景涉及在彼此之上绘制6个大的,半透明的图像。 Quartz会做到这一点,但你最多可能得到15fps。 OpenGL充分利用了iPhone的PowerVR芯片,并且绘图是硬件加速的 - 因此您可以将这些图像加载到OpenGL纹理中,并以25-30fps的速度渲染没问题。
我同意Phil的观点 - 尝试使用Quartz进行测试,看看它是否符合您的需求。 OpenGL非常强大,但它的API缺少Quartz的一些便利功能(例如保存/恢复图形状态)。
完全相同的说明,你可能想看看Unity的iPhone开发工具(http://unity3d.com/#iphone)。他们利用OpenGL,但为您提供了一个IDE来创建您的游戏。它抽象出所有图形级代码,因此您可以专注于高级游戏。我哥哥用它来写iPhone游戏,而且非常酷。
答案 2 :(得分:6)
我建议您查看Cocos2D iPhone。
适用于iPhone的cocos2d是用于构建2D游戏,演示和其他图形/交互式应用程序的框架。它基于cocos2d设计:它使用相同的API,但不使用python而是使用objective-c。
答案 3 :(得分:4)
最有可能是OpenGl。
答案 4 :(得分:3)
使用OpenGL ES的一个优点是,学习该技术的时间投入可以应用于其他平台/环境,并且您的游戏可能更适合端口。这些对您来说可能并不重要。
答案 5 :(得分:1)
我建议使用Quartz。 OpenGL ES非常适合3D内容。但是两者都工作得很好,所以如果你已经知道OpenGL ES,那就可以使用它了。
答案 6 :(得分:0)
你应该考虑在你的游戏中使用更少的资源,Apple建议不要在openGL应用程序中使用超过10 mb的纹理。
尝试纹理图集,重复使用图形,基于图块的图形......但避免使用很多图形资源。