Как бы вы решили эту необходимость opengl (в c), связанную с знанием того, на какую клетку в настольной игре щелкнул пользователь?

Итак, у меня есть эта доска, чтобы играть в настольную игру... Проблема в том, как я узнаю, на какой квадрат щелкнул пользователь? Я знаю координаты x и y, но как мне это автоматизировать, не выискивая конкретные местоположения каждого квадрата. (Кроме того, размер доски переменный... так что на ней может быть много квадратов или очень мало, но доска всегда имеет одинаковую высоту и ширину, то есть такое же количество квадратов, идущих слева направо, как и на доске. количество квадратов, идущих сверху вниз).

Большое спасибо, переполнение стека :)


person dasen    schedule 16.11.2010    source источник


Ответы (2)


Существует множество вариантов, предлагаемых по адресу: http://www.opengl.org/resources/faq/technical/selection.htm

person Ben Jackson    schedule 16.11.2010
comment
Не могли бы вы привести мне пример? - person dasen; 17.11.2010
comment
Эта функциональность давно устарела и не может поддерживаться на аппаратном уровне современными графическими процессорами; Я искренне рекомендую забыть об этом. - person Kos; 17.11.2010
comment
Чтобы уточнить: URL-адрес в моем ответе имеет множество альтернативных методов (например, рендеринг окна просмотра с цветовой кодировкой 1x1), помимо использования встроенного механизма выбора GL, который, как сказал Кос, не рекомендуется. - person Ben Jackson; 17.11.2010

Проблема, о которой вы говорите, называется «выбор», и для нее есть несколько решений:

  • выбор окклюзии на основе запроса (довольно современный, но я еще не пробовал - есть разглагольствования на эту тему здесь),
  • геометрическая пикировка (математическая и независимая от OpenGL),
  • выбор цвета (немного старый и хакерский, но очень простой в реализации).

Последний подход я уже описывал здесь:
OpenGL GL_SELECT или обнаружение столкновений вручную?

person Kos    schedule 17.11.2010