使用 Metal 绘制位图

Draw bitmap using Metal

问题很简单。在 Windows 上,您可以使用 BitBlt() 绘制到屏幕上。在 OS X 上,您通常可以使用 OpenGl,但如何使用 Apple 的新 Metal 框架将位图绘制到屏幕上?我在 Apples Metal 参考文献中找不到任何有价值的东西。 我现在正在使用 Core Graphics 进行绘图部分,但由于我的位图一直在更新,我觉得我应该转向 Metal 以减少开销。

非常简短的回答是:首先,您需要使用 Metal 设置标准渲染管道,如果您对渲染管道一无所知(注意:但这可能是通过渲染带有两个三角形的四边形来避免 3D 东西来简化,只需为顶点提供 xy 坐标)。有很多来自 Apple 的示例代码展示了如何设置标准渲染管道,最简单的可能是 MetalImageProcessing,因此您可以将其剥离(即使它使用了过于复杂的计算着色器来绘制,您想要将其替换为标准顶点和片段着色器)。

其次,您需要了解顶点着色器和片段着色器的工作原理以及如何使用它们绘制内容,请参阅 shadertoy。

刚刚注意到用户最后的评论,如果你有一个表示图像的字节数组,那么你可以从中制作一个 MTLTexture 并将其渲染到屏幕上,请参见上面的 Apple 示例,但将计算着色器更改为标准顶点和片段着色器以获得更快的性能。