A header-only C++ library for real-time data visualization and simulation support using modern OpenGL.
Morphologica is a header-only C++ library that provides real-time data visualization and simulation support tools. It enables developers to create dynamic, runtime visualizations of numerical simulations using modern OpenGL, manage configuration via JSON, and handle data persistence with HDF5. The library is designed to integrate seamlessly into C++ simulation projects with minimal overhead.
C++ developers working on numerical simulations, dynamical systems, agent-based models, or any project requiring real-time data visualization and simulation support. It is particularly useful for researchers and engineers in scientific computing who need to visualize data as it's generated.
Developers choose Morphologica for its header-only design, which simplifies integration, and its focus on providing essential visualization and support tools without imposing a heavy framework. Its modern OpenGL backend ensures fast rendering, and its compatibility with multiple GUI frameworks offers flexibility.
C++ header-only graphing and data visualization with Modern OpenGL
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
As a header-only library, morphologica avoids separate compilation steps, making integration straightforward with simple include directives, as shown in the quick start example.
Uses modern OpenGL for fast, runtime visualization of 2D/3D data with minimal overhead, enabling dynamic plot updates during simulations without significant performance loss.
Supports integration with GLFW, Qt, and wxWidgets, offering adaptable window management, as demonstrated in the examples directory for various GUI environments.
Bundles configuration management via JSON files with morph::Config and data persistence in HDF5 format with morph::HdfData, streamlining setup and analysis pipelines.
The library has been split into mathplot and maths repositories, leading to confusion, migration challenges, and potential documentation gaps for existing users.
Requires installation of multiple external libraries like GLFW, HDF5, and OpenGL, which can be cumbersome and platform-specific, as indicated by separate build READMEs for Mac and Windows.
Compared to mature tools like Matplotlib, it offers fewer chart types and customization options, focusing primarily on scientific simulation needs rather than general-purpose graphics.