我已经看过使用其他API,例如SpriteKit和SceneKit,但我发现它们不支持着色器,并且没有Metal那么强大.
我能想到如何实现这一目标的唯一方法是创建60种不同的模型,然后依次加载每种模型,以产生“停止运动”的效果,但我认为这样做可能是非常低效,并希望有一个更容易的答案?
非常感谢!
解决方法
Metal是(概念上)非常低级的接口.你使用Metal(几乎)直接与GPU交谈,所以要使用它你需要像GPU一样思考(类似):在数据缓冲区,顶点转换等方面你似乎工作得更高概念级别,所以你可能会更好地服务于其中一个高级游戏引擎:SpriteKit for 2D或SceneKit for 3D. (或者像Cocos或Unity这样的第三方引擎.)另一方面,Metal更适合构建这些游戏引擎.
SpriteKit和SceneKit支持着色器.查看文档中的SKShader
和SCNShadable
(并确保单击“更多”链接以阅读完整概述). SceneKit还支持角色动画(也称为骨骼动画,也称为蒙皮):通常在外部创作工具(Maya,Blender等)中设计和装配动画模型,然后使用SceneKit在运行时使用动画.
可以在Metal中执行基于GPU的骨架动画等操作.但我还没有看过任何关于它的教程或类似内容,可能是因为Metal是一项新技术.但从根本上说,它基于你在OpenGL或Direct3D中用于骨骼动画的相同技术 – 并且已经有很多关于这些技术的动画的文章.如果您愿意将时间和精力投入到低水平的工作中,那么从GL / D3D教程中调整主题相对容易.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。