MDLVertexDescriptor 和 MTLVertexDescriptor 有什么区别?
What's the difference between MDLVertexDescriptor and MTLVertexDescriptor?
Metal 的 MDLVertexDescriptor 和 MTLVertexDescriptor 有什么区别?我想知道为什么有 2 个不同的数据结构来定义一个顶点描述符?
MDLVertexDescriptor
是位于模型 I/O 框架中的接口。
MTLVertexDescriptor
是位于 Metal 框架中的接口。
尽管它们是相似的概念(描述顶点数据的布局方式),但由于以下原因,它们需要分开。
首先,您可以link针对上述两个框架,但您不需要使用任何一个其中之一。
例如,假设我需要编写一个加载模型并绘制它的应用程序,但我不想学习 Metal,所以我只坚持使用 OpenGL。 Model I/O 框架适合我的需要。在这种情况下,我会 link 反对模型 I/O 和 OpenGL,但不是金属,所以我不会有 MTLVertexDescriptor
.
另一方面,假设我需要编写一个加载 glTF 2.0 (https://www.khronos.org/gltf/) 模型的应用程序,因为我知道 Apple 已弃用 OpenGL,所以我想使用金属框架。在这种情况下,我将 link 反对 Metal 框架和其他一些可以加载 glTF 文件的库,但我不需要模型 I/O,因为我使用 glTF。所以,在这种情况下,我不会 MDLVertexDescriptor
.
这两个界面非常相似,因为它们都代表同一事物,但差异在某种程度上是特定于领域的。
但我认为,这些不同的主要原因 类 是 Apple 决定将类似的概念引入两个框架,而不是将所有 "similar" 概念分离到一个框架中,因为那样会更难维护、记录和变通。
Metal 的 MDLVertexDescriptor 和 MTLVertexDescriptor 有什么区别?我想知道为什么有 2 个不同的数据结构来定义一个顶点描述符?
MDLVertexDescriptor
是位于模型 I/O 框架中的接口。
MTLVertexDescriptor
是位于 Metal 框架中的接口。
尽管它们是相似的概念(描述顶点数据的布局方式),但由于以下原因,它们需要分开。
首先,您可以link针对上述两个框架,但您不需要使用任何一个其中之一。
例如,假设我需要编写一个加载模型并绘制它的应用程序,但我不想学习 Metal,所以我只坚持使用 OpenGL。 Model I/O 框架适合我的需要。在这种情况下,我会 link 反对模型 I/O 和 OpenGL,但不是金属,所以我不会有 MTLVertexDescriptor
.
另一方面,假设我需要编写一个加载 glTF 2.0 (https://www.khronos.org/gltf/) 模型的应用程序,因为我知道 Apple 已弃用 OpenGL,所以我想使用金属框架。在这种情况下,我将 link 反对 Metal 框架和其他一些可以加载 glTF 文件的库,但我不需要模型 I/O,因为我使用 glTF。所以,在这种情况下,我不会 MDLVertexDescriptor
.
这两个界面非常相似,因为它们都代表同一事物,但差异在某种程度上是特定于领域的。
但我认为,这些不同的主要原因 类 是 Apple 决定将类似的概念引入两个框架,而不是将所有 "similar" 概念分离到一个框架中,因为那样会更难维护、记录和变通。