Как быстро и просто создать {gif,png,jpg}-изображение на языке C++?
Есть программа, написанная на C++, которая рассчитывает движение частиц методом молекулярной динамики. Скажу сразу, что операционная система - Linux. Программа сейчас может только выводить координаты отдельных частиц. Движение частиц пока двумерное. Задача - визуализировать движение частиц (представить видео файл). Я хочу, чтобы программа создавала набор изображений - отдельных кадров в формате gif, png или jpg. На изображении должен быть просто, грубо говоря, прямоугольник, в котором летают кружочки - частицы; всё в ярких детских цветах. Далее я планирую с помощью ffmpeg собрать все изображения в видео-файл. Соответственно есть ли какая-нибудь библиотека, чтобы можно было мануально из кода, просто оперируя данными координат частиц, создать изображение?
На сегодняшний день я уже пробовал создавать такие изображения в gnuplot, а затем собирать все в ffmpeg, но я чувствую, что это не лучшее решение.
Update: Есть ограничения. Все должно компилироваться с помощью g++. Программа будет выполняться на кластере, поэтому об использовании OpenGL и захвате экрана речи быть не может. А так как компилятор должен быть g++, то фреймворки тоже использовать не получится.
Скорее всего удобнее будет все же использовать OpenGL. При этом совершенно не обязательно иметь окно, на котором будет происходить отрисовка. Поищите по ключевым словам offscreen rendering.
Я может что-то не понимаю, но почему бы не подключить банальный openGL и просто отрисовывать движения с помощью него? А для видео можно каким-нибудь приложением для захватки экрана записать.
Не получится, все будет выполняться на кластере с использованием MPI и возможно системы распределения очередей (PBS), а в этом случае вывод очень затруднен на мой взгляд, если только есть возможность создать OpenGL в виде какого-нибудь потока, который затем разбивать на gif
Вам требуется создать видеопоток (даже проще, видеофайл) из непрерывно создаваемых в памяти кадров, как я понимаю. Отсюда вывод - промежуточное сохранение в графический формат - избыточно.
Простое решение, рендерите каждый кадр в память (ну в обычный буфер в памяти) и пакуете theora в видеофайл. www.theora.org svn.xiph.org/trunk/theora/examples
Выбор теоры - ну бесплатно, в исходниках, хорошая документация, СПО.