Застрял в реализации выбора openGL

Я уже могу найти мировые координаты места, где я щелкнул, и он также проверяет это с помощью буфера глубины. Для этого используется следующий код:

GLint viewport[4];
GLdouble modelview[16];
GLdouble projection[16];
GLfloat winX,winY;
glGetIntegerv(GL_VIEWPORT, viewport);
glGetDoublev(GL_MODELVIEW_MATRIX, modelview);
glGetDoublev(GL_PROJECTION_MATRIX, projection);

// obtain the Z position (not world coordinates but in range 0 - 1)
GLfloat z_cursor;
winX = (float)x_cursor;
winY = (float)viewport[3]-(float)y_cursor;
glReadPixels(winX, winY, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &z_cursor);

// obtain the world coordinates
GLdouble x, y, z;
gluUnProject(winX, winY, z_cursor, modelview, projection, viewport, &x, &y, &z);

где x_cursor и y_cursor являются моими координатами курсора.

Пока все хорошо, и при печати x, y, z они кажутся хорошими!

Но теперь ... После разбора моих файлов, содержащих все полигоны / треугольники. Я поместил все в списки ДИСПЛЕЯ openGL. Итак, моя программа просто вызывает списки и переводит / вращает их. Каждый объект также имеет уникальное имя. Итак, все, что я храню, это списки, я не храню точки / треугольники каждого объекта

Мой вопрос:

Итак, у меня есть мировые координаты того места, где я щелкнул, но как я могу определить, какой объект соответствует этому position!?

5
задан Joseph 11 August 2011 в 17:41
поделиться