Итак, мой вопрос точно такой же, как в заголовке. Я не ищу конкретный пример кода, а просто некоторые мысли / рекомендации по любым предпочтительным методам этого.
В моем движке 2D-игр мне нравится иметь сетку, которая представляет определенное количество пикселей (например, 32x32 пикселя). Я специально хочу иметь возможность определять ширину и высоту каждой сетки в мировом пространстве, иметь одинаковую ширину обводки на всех линиях и иметь возможность регулировать размер плитки в соответствии с масштабированием камеры.
I В прошлом я пробовал несколько разных методов рисования этой сетки:
Первое, что я попробовал, - это использовать собственный шейдер для рисования сетки. Я нашел в Интернете код, в котором использовались некоторые концепции, которые я не понимал, чтобы просто нарисовать сетку на 2D-плоскости. Проблемы с этим подходом заключаются в том, что я не знал, как контролировать точный размер в моем игровом мире, и не понимал, как он работает в целом.
Мой второй подход был использовать мои средства отладки чертежа. Я закодировал набор функций, которые позволяют мне добавлять строки с разной шириной штриха в мировом пространстве, и я реализовал это, просто динамически генерируя квадраты для каждой строки в каждом кадре. Затем я могу нарисовать группу линий, которая дает мне сетку.
Мой третий подход заключался в том, чтобы нарисовать группу четырехугольников и использовать собственный шейдер для придания им контура. Затем я просто рисую кучу белых квадратов с черными контурами, создавая вид сетки.
Есть ли у кого-нибудь лучшее решение? Во всех своих подходах я никогда не пытался динамически настраивать сетку в соответствии с уровнем масштабирования камеры. Поэтому мы будем очень признательны за любые мысли о том, являются ли эти подходы типичными решениями или есть лучшее. Кроме того, если у вас есть какие-либо мысли о том, как распространить эти методы на трехмерное пространство, что тоже было бы неплохо, я не могу найти хороший способ получить одинаковую ширину обводки на линиях, нарисованных в мировом пространстве. * Мой движок в настоящее время кодируется с использованием Opengl и C ++, поэтому меня в первую очередь беспокоит то, как реализовать это, используя современный opengl, а не немедленный режим.
Вот изображение того, чего я пытаюсь достичь: ![grid example](https://i.stack.imgur.com/s1czy.jpg)
Изменить: Меня в первую очередь интересуют методы рендеринга. Вы используете несколько квадроциклов? Одна плоскость и сложный шейдер? Или вы используете четверной на каждую линию? Или что-то совсем другое?
Это одна из моих попыток, еще одна ссылка на внешний вид, которого я пытаюсь достичь. Я просто не могу не думать, что должен быть способ лучше, чем те, которые я пробовал. ![enter image description here](https://i.stack.imgur.com/8N42Q.png)