Недавно я закончил свою систему для загрузки массива квадов в VBO. Эта система позволяет квадроциклам использовать общие вершины для экономии значительного объема памяти. Например, массив 100x100 quads обычно использует 100x100x4=40000 вершин (4 вершины на quad), но с этой системой будет использоваться только 101x101=10201 вершина. Это огромная экономия места, когда вы получаете еще большие масштабы.
Моя проблема заключается в том, что для текстурирования каждого четырехугольника по отдельности каждой вершине нужна пара координат «UV» (или координата «ST») для сопоставления одной части текстуры. Это приводит к проблеме, как текстурировать каждый квадрат независимо друг от друга? Даже если два одинаковых текстурированных четырехугольника находятся рядом друг с другом, я не могу использовать одну и ту же текстурную координату для обоих четырехугольников. Это показано ниже:
*Каждый четырехугольник имеет размер 16x16 пикселей, а координаты текстуры имеют диапазон от 0 до 1.
Чтобы еще больше усложнить ситуацию, некоторых четырехугольников в массиве может вообще не быть (потому что эта часть ландшафта — просто пустой блок). Итак, как вы могли догадаться, это движок рендеринга для тех игр с 2D-тайлами, которые все пытаются сделать.
Есть ли способ текстурировать квадроциклы, используя технику сохранения вершин, или мне просто придется отказаться от этого метода и использовать менее эффективный способ?