我正在为 android 创建一个 coverflow 视图,但在处理视图上的点击时遇到了一些障碍。 我无法确定点击下方的方块。 为了确定单击哪个方块,从单击事件中获取 (X,Y) 数据并将其转换为 opengl 视图空间。 当把它放在一个正方形上时,麻烦就来了:换位、旋转和比较都可以在 java 中完成,但这似乎是一个巨大的浪费,因为所有这些操作都是在渲染视图时完成的。
所以,我的问题是:如何在 opengl 渲染过程中提取 2d 视图映射的对象坐标?
我的大脑有点扭曲,试图弄清楚opengl的模型和投影矩阵中的实际内容,但我似乎找不到矩阵中数字实际含义的任何规范。
谢谢!
您可以使用 gluUnProject()
和 gluProject()
在对象和窗口空间之间进行转换,并节省一些数学费用。 文档在这里和这里。
还有另一种技术涉及渲染一帧,其中场景中的所有基元都以不同的颜色渲染。 然后,您可以在触摸事件下测试像素颜色。 您可以使用此技术使用一些技巧,例如缩小视口,使其只是触摸周围的一小块区域,并将其渲染为纹理,以便用户永远不会看到它。