Есть ли способ заставить ряд плиток работать с GL_QUAD_STRIP? - PullRequest
1 голос
/ 02 сентября 2011

Если я хочу нарисовать ряд двумерных квадратных плиток для игры, очевидным способом является использование GL_QUADS и указание 4 вершин и координат текстуры для каждой плитки. Но так как это ряд квадратных плиток, последние две координаты каждого квадрата - это первые две из следующих более, что звучит как то, для чего предназначен GL_QUAD_STRIP. В итоге вам не нужно повторять все внутренние вершины.

Проблема возникает, когда вы пытаетесь применить текстуру. Вы уже связали координаты текстуры с вершинами, когда нарисовали их как «конец» четырехугольника, но когда вы хотите повторно использовать последние две в качестве начала следующего четырехугольника, вам нужно переназначить им новые координаты текстуры, если только используемая плитка находится непосредственно рядом с плиткой, использованной предыдущей плиткой в ​​текстуре набора плиток.

Есть ли способ заставить эту работу? Или вам просто нужно придерживаться GL_QUADS и указывать все внутренние вершины дважды?

Ответы [ 2 ]

1 голос
/ 02 сентября 2011

Более поздние версии OpenGL представили способ перезапустить примитив при рисовании из массива вершин. То, что вы делаете, указываете специальный фиктивный индекс элемента, который вместо ссылки на элемент в массиве вершин указывает начало новой цепочки примитивов, такой как четырехугольная полоса: http://www.opengl.org/wiki/Vertex_Specification#Primitive_Restart

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

1 голос
/ 02 сентября 2011

Есть способ сделать это, но нет полезного способа сделать это.То есть, нет способа сделать это, не добавляя больше индексов.И сделать это, по сути, просто превратить ваш GL_QUAD_STRIP в GL_QUADS.

Так что я бы посоветовал вам просто придерживаться GL_QUADS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...