首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MTLTexture vs CGImageRef

MTLTexture vs CGImageRef
EN

Stack Overflow用户
提问于 2019-04-23 05:54:41
回答 1查看 297关注 0票数 2

MTLTextureCGImageRef之间的主要区别是什么?什么时候我们需要使用MTLTexture而不是CGImageRef (反之亦然)?

我有一个应用程序(比方说视频游戏),它可以在一个专用的表面上自己绘制所有的东西。这包括60fps的动画(所以我需要每16ms重画一次表面)。我不知道使用Metal开发应用程序的最有效方法

EN

回答 1

Stack Overflow用户

发布于 2019-04-23 21:37:41

首先,MTLTexture来自于一个低级的图形应用编程接口。MTLTexture指的是驻留在GPU可访问的内存中的“图像”(不一定在GPU本身上)。然后,您可以编写一个程序,该程序使用包含着色器(在MTLRenderPipelineState上运行的程序)的金属,特别是渲染(MTLRenderPipelineState)或计算(MTLComputePipelineState)管线状态来读取纹理、对纹理进行采样、写入纹理并将其用作附件(将渲染结果输出到它们)。如果要读回MTLBuffer上的纹理数据,也可以将纹理复制到缓冲区( CPU )和其他纹理。但MTLTexture主要是供图形处理器使用,而不是中央处理器。此外,MTLTexture不仅限于2D,它还可以是立方体纹理甚至3D纹理。

另一方面,CGImage来自更高级别的应用编程接口(核心图形或Quartz 2D),旨在用于2D。您不需要着色器或图形处理器管道来创建或修改CGImage,并且有许多函数可以“开箱即用”处理这些图像。

我要说的是,如果你有一个3D视频游戏,你可以查看Metal,但它是一个低级的应用程序接口,例如,设置Metal是一个比设置OpenGL更复杂的过程。你不能按原样使用Core Graphics进行3D游戏。如果Metal看起来太难,你可以看看苹果公司的更高级别的API,比如SceneKit,它们也是用于游戏开发的。

关于2D游戏的开发,我不能说太多,但你绝对可以使用Metal来开发它,它可能有点“夸张”。

总而言之,您需要在复杂性和可控性之间找到平衡,并选择最适合您的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55801617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档