C ++ 2D Graphics Библиотека, которая обрабатывает 1 000 000 2D спрайтов? - PullRequest
6 голосов
/ 18 марта 2011

Я пытаюсь сделать проект, который должен обрабатывать очень большое количество простых 2D-объектов и, конечно, должен их рисовать. Для этого мне нужна хорошая библиотека C ++, которая может обрабатывать большое количество «спрайтов».

Я пробовал Qt, потому что я думал, что их демонстрация "40000 чипов" была очень впечатляющей. Однако, немного поиграв, кажется, у моего компьютера много проблем с управлением 160 000 чипов. Я не знаю технических деталей, почему это медленно (CPU? Плохое использование GPU OpenGL? Qt плохо для очень большого количества элементов?)

Итак, я искал в Интернете библиотеку, которая соответствует моим потребностям. Но я не смог найти ни одной, в основном потому, что ни одна библиотека, кажется, не говорит: «Эй, я хорош в управлении 1 000 000 объектов!», Но я уверен, что некоторые библиотеки более эффективны, чем другие.

Мне не нужна такая «хорошая» библиотека, как SDL, не имеет значения, если у меня нет поддержки джойстика или чего-то еще. Мне просто нужно отображать, масштабировать, вращать и перемещать большое количество простых 2D-объектов.

Спасибо!

P.S .: Я тестировал Ogre3D. Интересно, как им удается обрабатывать 15K треугольников и работать со скоростью 100 кадров в секунду на моем компьютере в своей демонстрационной программе. И это в 3D! Хорошо ли масштабируется, если я иду к треугольникам 150К?

Ответы [ 2 ]

5 голосов
/ 18 марта 2011

Я предполагаю здесь, но я думаю, что проблема в том, что в наборах инструментов GUI (таких как qt, gtk) есть объекты, которые слишком тяжелы для использования 1 000 000. Объекты GUI подсчитывают ссылки и содержат огромное количество дополнительных данных. На самом деле я не думаю, что вы найдете инструментарий GUI, который может делать то, что вы хотите.

Тем не менее, вам нужна библиотека 2D-графики (или 3D). Для чего-то такого размера вы захотите эффективно управлять рендерингом и на довольно низком уровне, OpenGL - разумный вариант, хотя он требует немного обучения (особенно для спрайтов). Но начните смотреть на это и найдите достойную библиотеку, которая подходит вам.

Может быть, даже просто измените вопрос на "C ++ 2D Graphics Library, которая обрабатывает 1 000 000 2D спрайтов?"

4 голосов
/ 19 марта 2011

Насколько мне известно, не существует основной видеоигры, которая отображает 1 000 000 2D-спрайтов (частиц) в одном кадре. Однако исследовательский проект 2004 года показал, как это можно сделать: Построение системы частиц на миллион *

По моему мнению, когда видеоигры, наконец, визуализируют 1 000 000 частиц в кадре, они будут делать это через OpenCL или DirectCompute, потому что это позволяет избежать известного аппаратного узкого места с частотой заполнения, что делает непрактичным рендеринг частиц в OpenGL или Direct3D. 1005 *

...