MDLVertexDescriptor 和 MTLVertexDescriptor for Metal 有什么区别?我想知道为什么有 2 种不同的数据结构来定义顶点描述符?

最佳答案

MDLVertexDescriptor 是一个位于 Model I/O 框架中的接口(interface)。
MTLVertexDescriptor 是一个位于 Metal 框架中的接口(interface)。

尽管它们是一个相似的概念(顶点数据如何布局的描述),但由于以下原因,它们需要分开。

首先,您 可以将 链接到上述两个框架,但是您不需要 来使用其中任何一个。

例如,假设我需要编写一个加载模型并绘制它的应用程序,但我不想学习 Metal,所以我只坚持使用 OpenGL。模型 I/O 框架适合我的需求。在这种情况下,我会链接到 Model I/O 和 OpenGL,而不是 Metal,所以我不会有 MTLVertexDescriptor

另一方面,假设我需要编写一个应用程序来加载,比如说,一个 glTF 2.0 ( https://www.khronos.org/gltf/ ) 模型,因为我知道 OpenGL 已被 Apple 弃用,所以我想使用 Metal Framework。在这种情况下,我将链接到 Metal 框架和其他一些可以加载 glTF 文件的库,但我不需要模型 I/O,因为我使用了 glTF。所以,在这种情况下,我不会有 MDLVertexDescriptor

两个接口(interface)都非常相似,因为它们都代表相同的事物,但差异在某种程度上是特定于领域的。

但我认为,为什么这些是不同的类的主要原因是,Apple 决定将相似的概念引入两个框架比将所有“相似”的概念分离到一个框架中要好,因为这样更难维护、记录和解决。

关于ios - MDLVertexDescriptor 和 MTLVertexDescriptor 有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55327275/

10-13 02:00