iOS推出Metal渲染库为了取代OpenGL。Metal有自己的Shader语言,渲染效率比OpenGL高。在这里我们一起探索:Metal使用C++限制、预处理定义、动态链接配置、GPU编译配置、设备坐标系、视口坐标系、纹理坐标系、矢量类型、矩阵类型、采样器状态、矩阵相乘。
1、使用C++限制
C++14的一些特性无法在Metal使用,具体如下:
lambda表达式
dynamic_cast操作
类型检测
new和delete操作
noexcept操作
goto跳转
register、thread_local关键字
virtual虚函数
派生类
异常处理
另外,不要在Metal代码使用C++标准库。函数指针在Metal2.3才支持。
2、预处理定义
预处理定义包括:Metal版本、在macOS或iOS平台编译。如下所示:
__METAL_VERSION__ // Set to the Metal language revision
__METAL_MACOS__ // Set if compiled with the macOS Metal language
__METAL_IOS__ // Set if compiled with the iOS Metal language
__METAL__ // Set if compiled wi