A C++11 library for generating procedural geometry primitives like spheres, boxes, and cones for use in graphics applications.
Generator is a C++11 library designed for procedural generation of geometric primitives such as spheres, boxes, cones, and cylinders. It provides mesh, path, and shape data that can be used by any graphics library, solving the need for efficient, on-the-fly geometry creation without tying to a specific rendering backend.
C++ developers working on graphics applications, game engines, or simulation tools who need to generate procedural 3D geometry programmatically.
Developers choose Generator for its lightweight, header-only design, extensive primitive and modifier support, and compatibility with standard C++11, offering a focused solution for geometry generation without the overhead of a full graphics library.
A procedural geometry generation library for C++11
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses lightweight generators and iterators to produce geometry data without storing unnecessary vertices, as emphasized in the library's philosophy for memory efficiency.
Includes over 20 mesh types like SphereMesh, TorusMesh, and TeapotMesh, plus shapes and paths, providing a wide range of geometric primitives out of the box.
Offers nested modifiers such as translate, rotate, and subdivide that can be chained, enabling complex transformations without manual vertex manipulation, as shown in the usage examples.
Comes with SvgWriter for 2D previews and ObjWriter for exporting 3D meshes to OBJ format, aiding in visualization and integration with tools like Blender.
Requires GML or GLM for vector math, adding setup complexity and potential compatibility issues, as noted in the compilation instructions.
The README explicitly warns about undefined behavior when using temporary primitives in for loops, which can lead to subtle and hard-to-debug crashes.
As a geometry-only library, it lacks any rendering capabilities, forcing developers to handle integration with separate graphics libraries, which increases project overhead.