OpenGL - Простой метод отсечения / окклюзии 2D?

Я работаю над относительно небольшой демонстрацией игры в 2D (вид сверху), используя OpenGL для моей графики. Это базовый угол, основанный на скрытности, и поэтому со всеми моими врагами я рисую дугу прицела, чтобы игрок знал, куда они смотрят.

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

http://tinyurl.com/43y4o5z

Мне любопытно, как мне лучше всего предотвратить подобное. У меня уже есть код, который позволит мне обнаруживать пересечения линий со стенами и так далее (для обнаружения вражеского взгляда), и я теоретически мог бы использовать его для обнаружения такого случая и соответствующего рисования многоугольника, но это, вероятно, было бы довольно неудобно и / или неэффективно, поэтому я полагаю, что если есть какие-либо встроенные системы OpenGL, которые могут сделать это за меня, они, вероятно, будут делать это намного лучше.

Я пробовал искать вопросы по таким темам, как отсечение / окклюзия, но я даже не уверен, что это именно то, что мне нужно; мои навыки OpenGL ограничены. Кажется, что что-либо, использующее, скажем, glClipPlanes или glScissor, не подойдет для этого из-за большого количества отдельных стен и так далее.

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

9
задан Linkage 23 September 2011 в 01:10
поделиться