Насколько я понимаю, примитив - это "треугольник", поэтому мне придется выражать свои отрезки в виде треугольников.Миллионы треугольников.
Неправильно, XNA может идеально нарисовать линии для вас следующим образом:
GraphicsDevice.DrawIndexedPrimitives(PrimitiveType.LineList, vertexOffset, 0, numVertices, startIndex, primitiveCount);
(Или PrimitiveType.LineStrip, если конечная вершина line1 является начальнойвершина линии 2).
Является ли XNA подходящим инструментом для этой работы или он будет слишком медленным?
XNA - это "инструмент", и если выРисуя много линий, это определенно будет быстрее, чем GDI +, и его легко реализовать, чем C ++, в сочетании с Unmannaged D3D.Рисование линии - очень дешевая операция.Я бы посоветовал вам просто установить XNA и сделать быстрый прототип, чтобы увидеть, сколько линий вы можете нарисовать одновременно.(Я думаю, по крайней мере, 1 миллион).Затем посмотрите, действительно ли вам нужно использовать продвинутые методы, описанные другими авторами.
Также метод «Упрощение полилиний», предложенный Феличе Поллано, не работает для отдельных линий, только для моделей, составленных из треугольников (Вы можете обменять множество маленьких треугольников на несколько больших один раз, чтобы повысить производительность, но при этом уменьшить визуальные эффекты, если вы уменьшите масштабность, то далеко никто не заметит) Это также не будет работать для «утолщенных линий», потому что они всегда состоят из2 треугольника.(Если только вы не разрешите согнутые линии).