Объединение примитивов в вершинных массивах SFML
В документации по SFML говорится, что вы можете комбинировать примитивы для создания массивов вершин. Я думаю, что они имеют в виду тот факт, что несколько Triangles
можно сгруппировать в TriangleFan
или же TriangleStrip
,
Мне интересно, есть ли способ объединить два существующих примитивных типа в одном массиве вершин. Например, могу ли я определить группу вершин как TriangleFan
а затем переключиться на LineStrip
? Или это потребует двух отдельных массивов?
2 ответа
Нет, вы можете использовать только один примитивный тип для каждого массива вершин.
С помощью следующей функции рисования вы можете теоретически использовать один массив / вектор (не sf::VertexArray
и предоставить разные смещения и размеры для рисования разных частей массива с разными примитивными типами, но это фактически то же самое, что и использование двух разных массивов, и, таким образом, вам нужно будет спросить себя, каково преимущество смешивания этих вершин вместе.
void draw(const Vertex *vertices, std::size_t vertexCount, PrimitiveType type, const RenderStates &states=RenderStates::Default)
Лукас, извините за прямой / прыгающий ... Но вы, кажется, ночной парень из SFML ... Продолжайте это ... Если бы кто-то хотел сделать вещи максимально эффективными ... вы говорите ... Сгруппируйте все примитивные типы вместе в их собственные соответствующие массивы вершин / &vector ... И вызов обращается к каждому из них по очереди? Как сказано в справке по SFML, производительность определяется количеством вызовов draw () (re gl, setup и т. Д.)
Или, помимо вашего решения, с вопросами выше ... Есть ли другой способ?
Вектор указателей на рисование? ... Не уверен ... Спасибо