Skip to main content

Что такое комплектация OpenGL®?

Выбор OpenGL® в компьютерном программировании - это процесс определения того, какой объект в трехмерной (3D) сцене находится в заданной точке экрана после визуализации сцены. Это также может относиться к расположению нескольких объектов в точке или внутри поля. Чаще всего выбор OpenGL® используется для определения того, какой 3D-объект на экране пользователь пытается выделить с помощью курсора мыши. Хотя эта операция может показаться простой, есть несколько тонкостей в том, как OpenGL® отображает сцену, что может сделать ее довольно сложной. Кроме того, в некоторых графических картах и ​​драйверах есть свои недостатки, которые могут привести к сбою функции выбора OpenGL® и возвращению ложных результатов.

Когда пользователь смотрит на 3D-сцену на мониторе компьютера, полученное изображение называется рендерингом сцены. Сцена фактически сохраняется в памяти как набор примитивных форм или многоугольников, которые сами по себе являются просто коллекциями трехмерных точек в пространстве сцены. Компьютер использует мировые координаты, которые иногда называют абсолютными координатами, для выполнения большинства основных функций, которые управляют объектами в сцене. В большинстве приложений пользователь может перемещать вид сцены под разными углами, чтобы объекты можно было видеть в разных ракурсах. Виртуальное местоположение пользователя в сцене называется углом камеры или положением камеры.

Сложность выбора OpenGL® возникает из-за определения местоположения мыши на двумерном (2D) экране из возможного произвольного положения и угла в пределах сцены, положения камеры. Кроме того, поскольку рендеринг с точки зрения зрителя на самом деле является двухмерным, пользователь не может указать глубину щелчка мыши внутри сцены. Функция выбора OpenGL® решает эту сложную проблему двумя способами.

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

Вторая проблема, а именно отсутствие возможности указать глубину выбранной области, решается путем возврата всех объектов, которые находятся под координатами мыши в сцене. Функция выбора OpenGL® возвращает все объекты в массиве вместе с тем, насколько далеко они находятся от местоположения зрителя. Это позволяет программе быстро найти ближайший объект при желании.

Один из способов визуализации выбора OpenGL® состоит в том, чтобы представить линию, иногда называемую лучом в 3D-программировании, перемещающуюся от местоположения указателя мыши в сцену и от местоположения зрителя. Каждый объект, которого касается этот луч, добавляется к массиву объектов, а также к тому, как далеко он находится от зрителя. Это очень простое объяснение того, как работает одна форма комплектации OpenGL®.

Другой метод выбора объектов в OpenGL® включает в себя поиск объекта по цвету, и это может быть значительно быстрее. Этот метод визуализирует сцену, но вместо того, чтобы применять освещение и текстуру к объектам, они визуализируются одним простым цветом. Каждый объект или группа объектов имеет свой особый цвет. Сцена отображается только в памяти и не отображается, поэтому это не влияет на то, что видит пользователь. Вместо того, чтобы искать 3D столкновения между объектами, вместо этого возвращается цвет в позиции курсора мыши, и этот цвет будет коррелировать с конкретным объектом.