Metal-CPP 是适用于 Metal 的低开销 C ++ 接口 , 可帮助你将 Métal 功能添加到以 C ++ 语言编写的图形类 App 、游戏和游戏引擎中。
亮点
- 使用 C ++ 接口替代 Metal 的 Objectif-C 头文件。
- 直接映射所有 Metal Objective-C 类、常量和枚举到 C ++ 的 MTL 名字空间中。
- 由于使用了 C ++ 内联函数调用 , 因此相较于使用 Métal 的 Objectif-C 头文件 , 无显著开销。
- 没有使用需要额外内存分配的封装容器类。
- 为 iOS 、 iPados 、 macOS 和 Apple tvos 提供完全相同的头文件和函数 / 常量 / 枚举。
- 向后兼容 : 所有
bool MTL::Device::supports...()函数都会检查其所需的 Sélecteur 是否存在;如果不存在 , 则自动返回false。 - 字符串
(ErrorDomain)常量为弱链接 , 在不可用时会自动设置为nullptr。
安装说明
1. 准备好 Mac。
2. 将 metal-cpp 文件夹添加到构建版本系统的头文件搜索路径中。
在 Xcode 中 :
- 点按 «Project Navigator» (项目导航器)。
- 点按所需项目。
- 点按 «Créer des paramètres» (构建版本设置)。
- 搜索 «Chemins de recherche d'en-tête» (头文件搜索路径)。
- :
metal-cpp/。
- 搜索 «C ++ Language Dialect» , 并确保将其设置为 C ++ 17 或更高版本。
- 请务必将 Foundation 、 Quartzcore 和 Métal 框架添加到 框架添加到 «Build Phases» (构建版本阶段) 标签页下要链接的框架列表中。
3. 生成实现代码。
metal-cpp 是一个只包含头文件的开发库。要生成实现代码 , 请在你的任意一个 .cpp : :
#define NS_PRIVATE_IMPLEMENTATION
#define CA_PRIVATE_IMPLEMENTATION
#define MTL_PRIVATE_IMPLEMENTATION
#include
#include
#include
注 : 也可以将 metal-cpp 头文件放在引号中。
4. 使用 Metal-CPP。
在任何需要引用 metal-cpp 对象或类型的文件中 , 只需包含头文件即可让那些符号可见。
#include
#include
#include
:Ns_private_implementation 、Mtl_private_implementation 和 CA_PRIVATE_IMPLATION 宏只能定义一次。
单个头文件的 Metal-cpp
为方便操作 , 你还可以在项目中以单个头文件的形式来包含 Metal-CPP。
在提取 Zip 文件内容后 , 请从终端运行以下命令以生成单个用来包含的头文件。
./SingleHeader/MakeSingleHeader.py Foundation/Foundation.hpp QuartzCore/QuartzCore.hpp Metal/Metal.hpp
运行完成后 , : :./SingleHeader/Metal.hpp。这个文件中包含你在项目中使用 metal-cpp 所需的一切。
请记得在一个 CPP 文件中生成实现代码。
#define NS_PRIVATE_IMPLEMENTATION
#define CA_PRIVATE_IMPLEMENTATION
#define MTL_PRIVATE_IMPLEMENTATION
#include
内存管理注意事项
Metal-cpp 遵循 Cocoa 和 Coco-coco 的对象分配策略。了解这些规则对于使用 metal-cpp 尤其重要 , 因为 c ++ 对象不符合自动引用计数 (arc) 的条件。有关更多信息 , 请参考 metal-cpp 下载项中的 Readme 文件。




