iOS 开发者的 Metal 养成计划「3」 —— 并行渲染和 GPU 高并发运算

发布于:2018-01-17 22:20,阅读数:392,点赞数:1


> 本文为小专栏[《Graphics Dance》](https://xiaozhuanlan.com/graphics_dance)特供文章,仅提供预览,欢迎订阅。

# 目录

- 引言
- Metal Command System
- Parallel Render Command
- Compute Command
- 小结


# 引言

看了上一篇文章以后相信读者已经对四种渲染命令中的其中两种已经有概念了。

本文会介绍四种绘制命令中剩下的两种:并行渲染命令和计算命令。

# Metal Command System

在上一篇文章中提到的,Metal 的命令共有四种:

- `Blit Command`:块命令,用于在`MTLBuffer`和`MTLTexture`之间拷贝数据。
- `Render Command`:渲染命令,用于绘图。
- `Parallel Render Command`:并行渲染命令。
- `Compute Command`:计算命令,可用于高并发数据处理。

本文会介绍这四种命令中的后两种。

### Parallel Render Command

正如它的字面意思:并行渲染命令。

> An object that splits up a single render pass so it can be simultaneously encoded from multiple threads.

单线程编码有时会带来一些性能问题,而`MTLParallelRenderCommandEncoder`已经为开发者做好了多线程编码命令的封装,但资源同步问题仍然需要开发者自己解决。

![](//cdn.yuusann.com/img/corpus/18006_1.png)

真正的渲染的任务仍然使用`Render Command`,使用方法跟在上篇文章中提到的完全一致。而`Parallel Render Command`仅仅是管理了一批可以同时对同一个渲染通道(`render pass`)进行编码的`Render Command`的一个封装

使用`Parallel Render Command`时,渲染命令编码器不再由`MTLCommandBuffer`产生,而是直接由`MTLParallelRenderCommandEncoder`产生。对着一系列的渲染命令进行编码以后,统一提交即可。

实现为:

---

# 预览结束,查看全文请订阅小专栏[《Graphics Dance》](https://xiaozhuanlan.com/topic/4501863792)


评论:0条


返回列表

返回归档

返回主页