Учебники по сбору и выбору, представленные в других ответах, здесь не применимы; среди прочего glSelectBuffer и glRenderMode не являются частью OpenGL ES.
Как сказано в другом месте, по существу есть два подхода. Вы можете выяснить, как прикосновение отображается в вашей сцене, и протестировать свои объекты математически. Если ваш квадрат плоский, как если бы вы рисовали его в 2D, вы можете легко добиться этого.
В качестве альтернативы вы можете сделать что-то вроде выбора, но с адаптацией к функциям, доступным в OpenGL ES. Например, очистите сцену до черного цвета и нарисуйте квадрат сплошным синим цветом. Используйте glReadPixels, чтобы получить значение цвета в месте касания. Если он синий, то касание идет по квадрату. Это, вероятно, более дорогой способ тестирования, потому что это означает дополнительную отрисовку сцены, но это означает, что вам не нужно реализовывать какие-либо дополнительные математические операции или другой код, помимо того, что предоставляет GL.
Единственная небольшая вещь, которую следует иметь в виду, это то, что OpenGL использует один и тот же способ адресации пикселей везде — (0, 0) находится внизу слева, положительный y идет вверх, а положительный x идет влево. Таким образом, независимо от того, относительно каких осей у вас есть координаты касания, вам нужно преобразовать их, чтобы они были относительно этого, прежде чем выполнять glReadPixels.
person
Tommy
schedule
11.11.2010