К каким пикселям рисовала эта операция рисования?
Хорошо, это относительно простая проблема, я хочу знать, где, в пространстве экрана, только что нарисована конкретная сетка. Затем я планирую хранить эту информацию в каком-либо хранилище данных, чтобы при взаимодействии с чем-либо в пространстве экрана я мог искать в регистре и находить объект, т. Е. Нажимать на нарисованный на экране космический корабль и затем выбирать цель. и т.п.
Я не могу найти какой-либо способ узнать, в какие пиксели была нарисована сетка...
Или, если я упускаю что-то очевидное в отношении того, что я хочу сделать, пожалуйста, дайте мне знать!
2 ответа
Нет простого способа сделать это. Но вы можете использовать другую текстуру в качестве цели рендеринга и визуализировать эти сетки с уникальными цветами.
Так, например, вы даете #FF0000 вашей сетке A и рисуете ее также для вашей второй цели рендеринга с этим цветом. Теперь, когда вы выбираете пиксель из второй цели рендеринга и смотрите на этот цвет, если это # FF0000, вы можете понять, что пиксель является частью сетки A. Таким образом, вы можете легко выбрать сетку, нарисованную на определенном пикселе, когда вы щелкнете один из тех пикселей.
Почему бы вам не спроецировать ваши координаты экранного пространства в трехмерное пространство? Единственным осложнением, которое у меня было, было то, что я остался с самолетом, я мог проверить, пересекалась ли сетка с этим самолетом, но у меня часто было несколько кандидатов на "сбор".
Проверьте Google для DirectX Unproject, и есть различные статьи, обсуждающие это. Для некоторых это иногда сложно реализовать, но сделано хорошо, на самом деле это довольно изящно; не отчаивайтесь людьми онлайн, которые говорят, что это не работает, это работает!