如何在我的OpenGL ES 1.1
android应用程序中使用gl.gluUnproject来确定用户触摸屏幕时选择的内容?
我的理解是触摸事件导致一条线,我必须找到它与之相交的第一个“东西”.
有没有关于如何做到这一点的教程?
解决方法
如果您正在进行2D到3D拾取,则需要稍微调整矩阵和向量. OpenGL ES 1.1不存在GlUnproject,所以你必须自己做一些数学运算.
射线 – 物体交叉是一种可行的方式.蒂姆斯姆斯的回答已经涵盖了其中的一部分,但还有更多.想法是从2D坐标创建射线到3D.为此需要视图矩阵和投影矩阵的逆.一旦你有射线,你可以使用你选择的射线相交测试,当然你需要选择最接近的对象,如Timmmm的点4.边界球和边界框很容易实现,互联网上有很多交叉测试教程.
This picking tutorial适用于DirectX,但您可能会理解.射线构造部分是最重要的.
编辑
Android实现了它自己的gluUnproject版本.它可用于创建射线,通过调用近距离和远距离平面(0和1)并从远距离平面结果中减去近平面结果来获得射线的方向. Ray起源是视图位置.更多here.