Skip to content

pjfordham/processing_cpp

Repository files navigation

Contributors Forks Stargazers Issues MIT License LinkedIn


C++ Mode for Processing - Proce++ing

Clean room port of the Processing Framework to C++!

Report Bug · Request Feature

About The Project

Inspired by the need for a friendly and simple way to display graphics in C++ harking back to the halcyon days of Borland C++. The Processing API seemed to be a good fit.

The first step was implementing enough of the API to run the Clock example. Support for other examples was added incrementally from there and now most of them work at comparable performance to their Java versions. With C++ and Java sharing similar syntax we are actually able to run some of the examples unmodified, albeit with a little preprocessor trickery.

(back to top)

Built With

C++20 OpenGL GLAD GLFW fmtlib freetype tess2

(back to top)

Getting Started

To get a local copy up and running follow these simple example steps. Tested on Windows 10 and Ubuntu 24.04 LTS.

Prerequisites

Everything needed should be pulled in by cmake with FetchContent.

Installation

  1. Clone the repo
    git clone https://github.com/pjfordham/processing_cpp.git
  2. Build with cmake
    cd processing_cpp
    mkdir release
    cd release
    cmake ..
    cmake --build . --config release

(back to top)

Usage

After building just run any of the executables built from the examples, e.g. for Linux just run ./Mandelbrot, or Windows release\Mandelbrot.exe. Below is some sample output.

Atoms DisableStyle Graphing2DEquation
Koch LinearGradient Mandelbrot
Monjori Noise3D NoiseSphere

To get more of a taste of what to expect see visit, the original framework's examples pages. Most of these examples work identically to their Java and Javascript counterparts.

(back to top)

Roadmap

See the open issues for a full list of proposed features (and known issues).

(back to top)

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

(back to top)

License

Distributed under the MIT License. See LICENSE.txt for more information.

(back to top)

Acknowledgments

Processing

(back to top)

About

The Processing Framework ported to C++ and OpenGL

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published