Я вычисляю 3D-координаты по щелчку мыши на 2D-экране. Затем я рисую точку по вычисленной 3D-координате. В коде все в порядке, в методе все в порядке, все работает нормально. Но есть одна проблема, которая имеет отношение к глубине.
Если размер объекта около (1000, 1000, 1000), я получаю полную глубину, точную трехмерную координату поверхности объекта. Но когда я загружаю объект с размером (20000, 20000, 20000), я не получаю точные (глубину) 3D-координаты. Я получаю некоторое смещение от поверхности. Точка рисуется с некоторым смещением от поверхности. Итак, мой первый вопрос: почему это происходит? и второй вопрос: как я могу получить полную глубину и точную 3D-координату для очень крупных объектов?
Я рисую трехмерную точку с помощью
glDepthFunc(GL_LEQUAL);
glDepthRange(0.0, 0.999999);
и используя
glReadPixels(x, y, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &wz);
if(wz > 0.0000001f && wz < 0.999999f)
{
gluUnProject()....saving 3D coordinate
}