Как рассчитать Touch на openGL, используя glUnProject - PullRequest
0 голосов
/ 24 июня 2011

Привет, я нашел близкий план и дальний план ... тогда как определить, используя это, я коснулся объекта ... может кто-нибудь, пожалуйста, помогите мне ... Вот мой код ..

-(Boolean) checkCollission:(CGPoint)winPos
{   
    winPos.y = (float)__viewport[3] - winPos.y;

    Point3D nearPoint;
    Point3D farPoint;
    Point3D rayVector;

    //Retreiving position projected on near plan
    gluUnProject( winPos.x, winPos.y , 0, __modelview, __projection, __viewport, &nearPoint.x, &nearPoint.y, &nearPoint.z);

    //Retreiving position projected on far plan
    gluUnProject( winPos.x, winPos.y,  1, __modelview, __projection, __viewport, &farPoint.x, &farPoint.y, &farPoint.z);
}

1 Ответ

2 голосов
/ 24 июня 2011

и…

rayVector.x = farPoint.x - nearPoint.x
rayVector.y = farPoint.y - nearPoint.y
rayVector.z = farPoint.z - nearPoint.z

Теперь, когда вы определили луч, который попадает в сцену, по положению мыши, вы должны проверить, пересекается ли луч с любым из объектов.OpenGL не может помочь вам в этом, поскольку все, что OpenGL собирается, это рисовать что-то на экране.

Выбор , о которой вы спрашиваете, это проблема вне OpenGL.Поиск в интернете по терминам «Тест пересечения лучей» должен дать вам множество результатов.

...