@alexanderpetrov

Как быстро и просто создать {gif,png,jpg}-изображение на языке C++?

Есть программа, написанная на C++, которая рассчитывает движение частиц методом молекулярной динамики. Скажу сразу, что операционная система - Linux. Программа сейчас может только выводить координаты отдельных частиц. Движение частиц пока двумерное. Задача - визуализировать движение частиц (представить видео файл). Я хочу, чтобы программа создавала набор изображений - отдельных кадров в формате gif, png или jpg. На изображении должен быть просто, грубо говоря, прямоугольник, в котором летают кружочки - частицы; всё в ярких детских цветах. Далее я планирую с помощью ffmpeg собрать все изображения в видео-файл. Соответственно есть ли какая-нибудь библиотека, чтобы можно было мануально из кода, просто оперируя данными координат частиц, создать изображение?

На сегодняшний день я уже пробовал создавать такие изображения в gnuplot, а затем собирать все в ffmpeg, но я чувствую, что это не лучшее решение.

Update: Есть ограничения. Все должно компилироваться с помощью g++. Программа будет выполняться на кластере, поэтому об использовании OpenGL и захвате экрана речи быть не может. А так как компилятор должен быть g++, то фреймворки тоже использовать не получится.
  • Вопрос задан
  • 3813 просмотров
Решения вопроса 2
SagePtr
@SagePtr
Еда - это святое
ImageMagick, к примеру
Ответ написан
Комментировать
tsarevfs
@tsarevfs Куратор тега C++
C++ developer
Скорее всего удобнее будет все же использовать OpenGL. При этом совершенно не обязательно иметь окно, на котором будет происходить отрисовка. Поищите по ключевым словам offscreen rendering.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
ManWithBear
@ManWithBear
Swift Adept, Prague
Я может что-то не понимаю, но почему бы не подключить банальный openGL и просто отрисовывать движения с помощью него? А для видео можно каким-нибудь приложением для захватки экрана записать.
Ответ написан
donkaban
@donkaban
Умею рисовать тени
Вам требуется создать видеопоток (даже проще, видеофайл) из непрерывно создаваемых в памяти кадров, как я понимаю. Отсюда вывод - промежуточное сохранение в графический формат - избыточно.
Простое решение, рендерите каждый кадр в память (ну в обычный буфер в памяти) и пакуете theora в видеофайл.
www.theora.org
svn.xiph.org/trunk/theora/examples

Выбор теоры - ну бесплатно, в исходниках, хорошая документация, СПО.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы