iOS金属:支持用户交互

iOS金属:支持用户交互,ios,metal,Ios,Metal,我正在尝试使用iOS metal构建一个简单的应用程序,它需要用户交互。 触摸屏幕时,屏幕上的焦点转移到触摸的点。有点像禅宗花园应用程序,触摸时,你会更接近被触摸的点。 如果您有任何关于使用何种方法或如何进行设计的想法/建议/讨论,我们将不胜感激 谢谢 您可以将UIAPTgestureRecognitor链接到应用程序的UIView。使用它,您可以获得水龙头的坐标,如以下问题所示: 可以使用MTLBuffer将新坐标移交给着色器函数 如果希望用户能够像Zen Garden那样选择场景中的3D对

我正在尝试使用iOS metal构建一个简单的应用程序,它需要用户交互。 触摸屏幕时,屏幕上的焦点转移到触摸的点。有点像禅宗花园应用程序,触摸时,你会更接近被触摸的点。 如果您有任何关于使用何种方法或如何进行设计的想法/建议/讨论,我们将不胜感激


谢谢

您可以将UIAPTgestureRecognitor链接到应用程序的UIView。使用它,您可以获得水龙头的坐标,如以下问题所示:


可以使用MTLBuffer将新坐标移交给着色器函数

如果希望用户能够像Zen Garden那样选择场景中的3D对象,可以实现选择缓冲区

为每个可选对象指定唯一的颜色(或整数ID),并将其存储在一个简单的表中。渲染到“选择缓冲区”(实际上是可渲染纹理)并写入唯一颜色或整数ID。可以A)在渲染场景以供查看时将此选择缓冲区渲染为另一个附件,或者B)可以在过程中再次渲染场景(绘制一次以供查看场景,另一次绘制以填充选择缓冲区)

获得触摸事件时,可以使用事件2D坐标选择该坐标处的像素。您应该读回选择缓冲区并检查颜色(或整数ID)。由于颜色对于每个对象都是唯一的,因此可以使用该颜色在创建的表中查找对象

至于是A)使用附件作为选择缓冲区还是B)在第二次过程中渲染:A)具有不需要绘制每个对象两次的优点,因为在渲染场景以供查看时渲染选择缓冲区。使用B)您的选择缓冲区可以小于用于查看的缓冲区,使其在填充率方面更快。另外,使用B)可以更容易地将用于查看的渲染与用于选择的渲染分离开来,因此在获得触摸事件时只需渲染选择缓冲区