随着 macOS Sonoma 的发布, Apple 还更新了 Metal 开发工具的当前版本以用于 Windows。 以下是如何获取和使用它们。
金属是 Apple适用于 macOS 的图形框架。 Metal 允许您使用以下命令创建丰富、高性能的 2D 和 3D 图形 Apple的图形引擎针对所有人进行了优化 Apple 设备。
当金属运行时 Apple 设备,您还可以使用 Microsoft Windows 作为创建在 Metal 中使用的资源、图像、着色器和纹理的平台。
Apple 有两种金属 Windows 在其开发者工具网站上下载:Metal Developer Tools 4.0 for Windows 和金属着色器转换器 Windows。 您可以通过登录您的 Apple 在线开发者帐户。
下载 Metal 开发工具 Windows,登录您的 Apple 开发者帐户,转到网络浏览器中的下载页面并向下滚动到 金属开发工具 Windows:
点击 显示详细资料 箭头,然后单击 金属开发工具 4.0 Windows.pdf 和 金属开发工具 4.0 Windows。EXE文件 将它们下载到您的计算机存储中。
接下来,向下滚动一点 金属着色器转换器 Windows 并单击 显示详细资料 箭头,然后单击 金属着色器转换器 Windows.pdf 和 金属着色器转换器 Windows。EXE文件 将它们下载到您计算机的存储空间:
安装
将所有下载的项目移至新文件夹中。 您现在应该有四个项目。 在安装之前您可能需要通读这两个 PDF 文件:
接下来,如果您将文件下载到您的 Mac,插入一个 Windows- 兼容的 USB 拇指驱动器或其他磁盘,并将四个项目复制到其中。 您将使用拇指驱动器将文件复制到您的 Windows 10 或 11 台机器。
复制完成后,将 USB 驱动器插入您的电脑 Windows 电脑上把四个文件复制过来。 运行两个 .exe 安装程序文件以在您的计算机上安装这些工具 Windows 机器。
作为金属开发工具 Windows PDF 指出:
“默认情况下,该软件包被安装到 %PROGRAMFILES%Metal Developer Tools
。 安装后你会发现:
bin
包含纹理转换器工具。
include
包含 AppleTextureConverter 库的标头。
lib
包含 AppleTextureConverter 库。
metalios
包含定位时要使用的工具集 iOS 和电视操作系统。 metalmacos
包含针对 macOS 时要使用的一组工具。
Metal 开发者工具应该与您计划发布的操作系统 SDK 版本相匹配。”
它还指出,除了 GUI 安装之外,安装程序还可以支持命令行安装,如下所示:
"Metal Developer Tools-Windows.exe" /S /D=C:UsersMy NameSandboxTools
安装后,您可以使用这些工具来转换着色器和资产 Windows 计算机转换成金属使用的格式。
第一个工具, TextureConverter
皈依者 Windows- 将纹理创建为 Metal 接受的 GPU 压缩纹理格式。 查看详细信息并运行选项 TextureConverter
, 类型:
TextureConverter.exe --h
进入命令提示符 Windows 并按 返回 或者 Enter。
正如开发者说明所示,要合并 TextureConverter
变成你自己的 Windows 纹理工具,使用提供的 AppleTextureConverter 库,并阅读 AppleTextureConverter.h
头文件以获取更多信息。
还包括用于编译图形和计算着色器的工具 Windows 使用以下命令进入金属库对象 Apple 金属着色语言。
没有附注 Windows 有关如何执行此操作的工具,因此您需要阅读文档 -> 金属区域的着色器库部分中的通过预编译源文件构建着色器库 Apple的在线 Metal 文档。
实际上,您将使用以下工具: Windows DXIL 格式为中间 .air 格式,然后为 .metalar 和 .metallib 文件,这些文件可以加载到 Xcode 中并在运行时从您的应用程序运行。 从文档中:
“metal 编译器工具将每个着色器源文件转换为中间表示文件。 然后,metallib 和 metal-ar 工具分别将中间表示文件编译成库和二进制存档”。
正如文档所述,Metal 命令行工具用于 Windows 使用与 macOS 相同的选项和参数。
另一个工具用于 Windows 安装的是 Metal Shader Converter Windows。
该工具将 LLVM IR 字节码形式的中间表示转换为适合加载到 Metal 中的字节码。
LLVM 是 Xcode 在项目编译过程中使用的开源编译器基础结构。
您可以阅读有关 LLVM 的更多信息: llvm.org 以及该站点上位码页面上的字节码格式(LLVM 称之为“位码”)。
PACKT Publishing 的《LLVM Cookbook》一书中也介绍了字节码格式。
Metal Shader Converter 既作为独立工具又作为库提供,如果您愿意,您可以将其合并到自己的工具中。
另请参阅提供的头文件 metal_irconverter_runtime.h
。
金属着色器转换器 Windows 需要微软 Windows 10 或更高版本,以及 Microsoft Visual Studio 2019 或更高版本。
使用 Metal Shader Converter 构建的库 Windows 仅适用于 macOS 14 Sonoma,并且 iOS 17. 如果它们是为早期操作系统版本构建的,则某些功能可能不可用。
Metal Shader Converter 的第一个也是最简单的用途 Windows 是转换一个 Windows DirectX DXIL(DirectX 中间语言)着色器到 Metal 着色器库。 这可以使用以下方法完成 metal-shaderconverter
命令行工具。
metal-shaderconverter shader.dxil -o ./shader.metallib
您可以获得有关以下内容的更多信息 metal-shaderconverter
在 Windows 通过跑步 metal-shaderconverter --help
在命令提示符下。
还有一个 libmetalirconverter
提供的动态代码库 (dylib) 可与 C、C++、Objective-C 和 Swift 项目配合使用,让您可以使用提供的将 DXIL 转换为 Metal IRCompiler
班级。
这种转换代码相当简单,Metal Shader Converter PDF 中提供了不到一页的示例代码。
本质上是使用提供的 IRCompiler
类,首先创建该对象的实例,设置入口点名称,使用以下命令将 DXIL 对象转换为 IR 对象 IRObject
类,使用以下命令将其编译为 Metal IRCompilerAllocCompileAndLink()
函数,并检查输出。
提供的 IRMetalLibBinary 类允许您加载和操作已编译的 Metal 对象。
相当冗长的三十页金属着色器编译器 Windows PDF 包含许多其他选项,您可以使用这些选项进行转换 Windows 到 Apple Metal 包括顶点属性、采样器状态对象、参数缓冲区、光线追踪等。
还有有关实现最佳 Metal 性能的技巧以及处理复杂着色器管道(包括几何和曲面细分)的技巧。
PDF 还建议查看 Apple的 Metal 示例代码项目 Learn Metal with C++ 金属样本代码 页。
其他资源
如果您不懂 C++,您需要先从一本关于 C 的简单经典书籍开始,例如权威的 C 书 C 编程语言 作者:Brian Kernighan 和已故的 Dennis Ritchie,两人于 1970 年代在贝尔实验室编写了 C 语言,以创建 UNIX 操作系统。
C++ 由 Bjarne Stroustrup 创建,基于 C,但提供了面向对象 (OOP) 功能,例如类、对象、标准模板库 (STL) 和其他现代功能。 Stroustrup 的著作《C++ 编程语言第四版》是必读之作。
斯特鲁斯特鲁普还有一个 网站 在 以及其他一些有用的 C++ 书籍和教程。
一年一度的 C++ 会议, 普康 每年 10 月举行 – 今年于 10 月 1 日至 6 日在科罗拉多州奥罗拉举行。CppCon 还设有 YouTube 渠道 有很多很棒的 C++ 教程。
C++ 于 1994 年开始流行,当时 C 等基于过程的语言的局限性变得明显。 C 有多种标准,包括 C99、C11、C14、C17 和 C22。 APRESS 有一些关于每个标准的好书。
您可以在 Xcode 的构建设置窗格中设置 Xcode 编译器使用哪些标准。
1989 年,NeXT Computer 的 NeXT 团队创建了 Objective-C,它是一种基于 C 的类似 OOP 语言,但具有动态链接和对象自省等额外优点。
另外值得注意的是,一些第三方3D标准也有一些要求,其中许多是基于 Windows DirectX/Direct3D DXIL 标准。
蒸汽,用于 example,具有必须满足的某些 DirectX 要求 – 因此,如果您要发布到 Steam,并且 Apple 同时,您需要了解这些要求。 蒸汽有一个 页 其中详细说明了要求。
Microsoft 还在 GitHub 上的 DirectX-Specs 和 DirectXTK12 存储库中提供了 DirectX-Specs 页面和 DirectX Shader Model 6。
这 Windows DXIL 调试和调整 PIX 工具也可用。
Microsoft 还有一个 DirectX 开发人员博客。
最后,NVIDIA 有一个 Windows基于 DirectX 的调试工具,称为 Nsight Graphics,如果您愿意面对相当复杂的情况 文档。
Apple的添加 Windows macOS Sonoma 中的 Metal 工具意味着现在可以更轻松地将现有游戏图形管道移植到 Metal,以便它们可以在 Apple 平台。 随着时间的推移,我们可以期待 Apple 改进其 Metal 工具,使跨平台游戏开发不再那么痛苦。