【问题标题】:Why Metal Shading Language is C++ but Metal itself isnt'?为什么 Metal Shading Language 是 C++ 而 Metal 本身不是?
【发布时间】:2021-08-27 11:28:51
【问题描述】:

我希望在这里提出的问题不要太哲学化,并且这个工程决策背后有一个实际的务实推理。

考虑到大多数游戏引擎都是用 C++ 编写的,而且许多着色语言已经具有不同的可能不熟悉的语法,这促使创建自定义着色语言和转译器。

那么,如果 Apple 承认这些现实,为什么他们没有提供一流的 C++ Metal API?

【问题讨论】:

  • Metal API 应该可以在多种语言中使用,并且与 C++ 的互操作充其量是棘手的——很少有语言可以合理地做到这一点,而且几乎没有一种语言做得很好。着色语言是它自己的语言和自己的编译器,不需要与任何东西进行互操作。
  • 好的,公平的。但是他们可以通过提供 C API 和官方 C++ 包装器来完成 Cronos 对 Vulkan 所做的事情。
  • @Vitaly 这既是商业决策,也是技术决策,我怀疑相关人员之外的任何人都能够回答
  • 当然可以,但 Apple 的财务激励措施与 Khronos 不同。此外,Vulkan C++ API 是开源的,Apple 通常不这样做。

标签: c++ objective-c shader metal


【解决方案1】:

使用documentation网页上的搜索功能,您将
找到Rendering a Scene with Deferred Lighting in C++示例,它确实主要是用C++编写的。

这个例子大约在 2018 年就出现了。它需要 macOS 10.15,但也可以在支持金属的旧机器上运行,但代码会有一些微小的变化。

这个特定示例的文档甚至用图形很好地编写了详细解释它,因此您可以跟进它是如何完成的。

因为 Apple 的网页往往只支持 Swift 和 Objective-C 文档,所以它可能会帮助人们找到指向 RenderingASceneWithDeferredLightingInCPlusPlus.zip 的直接链接。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-24
    • 2020-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-12
    • 1970-01-01
    • 2018-04-16
    相关资源
    最近更新 更多