通过OpenGL方块检测用户的触摸

Van*_*nel 5 android opengl-es touch

可能重复:
如何从屏幕确定3D空间中的触摸内容?

我正在开发一个Android应用程序.我也在使用OpenGL图形.

我在屏幕上绘制了一个正方形,我想让用户在触摸它时移动它.换句话说,当用户将手指放在正方形上时,用户应该能够移动方形.如果他接触广场外没有任何事情发生.

如何检测用户何时接触方块?

谢谢.

Tom*_*mmy 3

其他答案中提供的挑选教程在这里不适用;其中 glSelectBuffer 和 glRenderMode 不是 OpenGL ES 的一部分。

\n\n

正如其他地方所述,基本上有两种方法。您可以弄清楚触摸如何映射到场景中并以数学方式测试您的对象。如果你的正方形是平的,就像你在二维中绘制它一样,那么你可以很容易地实现这一点。

\n\n

或者,您可以做一些本质上类似于拾取的事情,但要适应 OpenGL ES 下可用的功能。例如,将场景清除为黑色并用纯蓝色绘制正方形。使用 glReadPixels 获取触摸位置的颜色值。如果它是蓝色的,那么触摸就在正方形上。这可能是一种更昂贵的测试方法,因为它意味着额外绘制场景,但这意味着您不必实现 GL 提供的任何额外数学或其他代码。

\n\n

唯一需要记住的一点是,OpenGL 使用相同的方式来寻址各处的像素,\xe2\x80\x94 (0, 0) 是左下角,正 y 向上,正 x 向左。因此,无论您的触摸坐标相对于哪个轴,您都需要在执行 glReadPixels 之前将它们转换为相对于该坐标轴。

\n