问题很简单。在 Windows 上,您可以使用 BitBlt() 来绘制到屏幕上。在 OS X 上,您通常可以使用 OpenGL,但是如何使用 Apple 的新 Metal 框架将位图绘制到屏幕上?我在苹果 Metal 引用资料中找不到任何有值(value)的东西。 我现在使用 Core Graphics 进行绘图部分,但由于我的位图一直在更新,我觉得我应该转向 Metal 以减少开销。
最佳答案
非常简短的答案是这样的:首先,您需要使用 Metal 设置一个标准渲染管道,如果您对渲染管道一无所知,那么这是一项工作(注意:但这可以通过以下方式简化)通过渲染具有两个三角形的四边形来避免 3D 内容,只需给出顶点的 xy 坐标)。 Apple 有很多示例代码展示了如何设置标准渲染管道,最简单的可能是 MetalImageProcessing,因此您可以将其剥离(即使它使用绘制过于复杂的计算着色器,您也希望以替代标准顶点和片段着色器)。
其次,您需要了解顶点和片段着色器的工作原理以及如何用它们绘制内容,请参阅shadertoy 了解这一点。
刚刚注意到用户的最后评论,如果您有一个表示图像的字节数组,那么您可以从中创建一个 MTLTexture 并将其渲染到屏幕上,请参阅上面 Apple 的示例,但将计算着色器更改为标准顶点和片段着色器以获得更快的性能。
关于macos - 使用 Metal 绘制位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38649188/