在openGL ES中检测最近的顶点到相机

时间:2014-11-06 10:29:23

标签: ios objective-c opengl-es

我有一个存储为Vertices数组的网格,其中一个Index数组用于绘制它。还使用着色器重绘了四个顶点以突出显示这些点,并将这些顶点的索引存储在另一个数组中。

用户可以使用触摸来旋转模型,这会影响modelViewMatrix:

modelViewMatrix = GLKMatrix4Multiply(modelViewMatrix, _rotMatrix);

我的问题是,当用户轮换时,我需要检测我的四个突出显示点中哪一个最接近屏幕。

我认为最好的方法是计算从视锥体的近剪辑到该点的距离,但是如何计算这些点呢?

1 个答案:

答案 0 :(得分:1)

您可以从相机/眼睛空间[1]轻松完成此操作,其中所有内容都相对于相机(因此,相机将位于(0,0,0)并向下看负z轴)。

使用modelViewMatrix将顶点转换为相机空间,例如vertex_cs。那么顶点距摄像机(平面)的距离就是-vertex_cs.z。

-
1. What exactly are eye space coordinates?