Объединение примитивов в вершинных массивах 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 и т. Д.)

Или, помимо вашего решения, с вопросами выше ... Есть ли другой способ?

Вектор указателей на рисование? ... Не уверен ... Спасибо

Другие вопросы по тегам