【发布时间】:2016-04-21 15:07:43
【问题描述】:
如何将图元渲染到屏幕外纹理,而不是直接渲染到屏幕中?
我有一组三角形和相应的颜色,我只想用与屏幕相同的方式绘制它们,但绘制成屏幕外纹理,我可以将其保存到文件中。
谁能给我看一个代码示例?
【问题讨论】:
-
你试过什么?在 Metal 中,所有的渲染都是针对纹理完成的;唯一的区别是您是绘制到一个包含在可绘制对象中然后呈现到屏幕上的纹理,还是您自己管理的纹理。如果要绘制后者,只需创建一个适当大小和格式的
MTLTexture并将其设置为渲染通道描述符的第一个颜色附件的纹理。然后,您可以使用getBytesAPI 获取图像数据并将其写入。 -
看我的代码,我已经更新了问题
-
我想我的问题是我的坐标是错误的,也许我应该设置视口或者自定义投影......
-
对,您应该从顶点着色器返回剪辑空间坐标。如果您的顶点尚未在该空间中指定,您将需要使用某种投影矩阵将它们移动到其中。
-
如果您的顶点位于基于像素的坐标中,则可以使用正交投影矩阵对它们进行缩放和偏置,以使 x 和 y 始终介于 -1 和 1 之间。请参阅this article 中的
makeOrthographicMatrix。
标签: ios objective-c swift metal