2012-06-13 5 views
2

Только что изучил OpenGL на андроиде, изучив основы создания игры.OpenGl ES - Как сопоставить различные текстуры с сеткой плиток

Беда, которую я испытываю, связана с отображением различных текстур «на черепицу» на мою сетку.

Например:

У меня есть сетка из плиток - 8x8 - в моем массиве вершин я определяю сетку, определив 9х9 вершины для построения столбцов/строк. Затем я перехожу и создаю буфер индекса, рассказывающий ему, как рисовать два треугольника, составляющих каждый квадрат в сетке.

Мое разочарование заключается в отображении текстур на разные плитки сетки, поскольку каждый квадрат SHARES вершины с другими квадратами в сетке, и насколько я знаю, вы можете применять только одну координату текстуры на вершинах в Opengl.

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

Может кто-нибудь угодить моему новизну в том, как я собираюсь получить разные текстуры на плитку на сетке!

Спасибо!

ответ

0

Единственное решение, которое я могу думать о том, чтобы генерировать повторяющиеся вершины в буфер вершин, которые позволили бы мне назначить индивидуальные координаты текстуры для каждой вершины

Это именно то, что вы должны сделать. Это может показаться расточительным, но «вершина» для opengl - это совокупность ВСЕХ атрибутов, которые определяют вершину (включая texcoords, normals и т. Д.). Если одна физическая позиция вершины разделяется четырьмя квадрациклами, но texcoord этой точки отличается для каждого квада, чем вы должны создать 4 уникальные вершины и индексы для ссылки на эту точку.

+0

Благодарим за разъяснение! Как они идут с текстурированием больших сеток? – user1411499

+0

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

+0

Большое спасибо - вы помогли мне много хорошего сэра! – user1411499