Skip to content
Matthijs van Otterdijk edited this page May 5, 2013 · 1 revision

Quil is an idiomatic wrapper for Processing, a graphics rendering library for Java. Quil is based on Processing 1.5.1.

First impressions

Quil works with sketches, which are simplified representations of visual applications. Each sketch has a draw function, which is called repeatedly to render to a window. A major part of Quil is devoted on extending this functionality in an easy-to-use manner.

Advantages

  • Online documentation: Quil has a documentation system integrated in the clojure repl. Calling (show-cats) gives a category overview of all functions in clojure, and (show-fns category-id) shows all functions in a category. Finally, (doc function-name) shows the documentaiton of particular functions as usual.
  • Redefinable draw function: The draw function can be redefined without stopping the sketch. Though the draw callback can't be changed while a sketch is running, the callback can be a simple proxy function to the real draw function, which can be changed. This allows for a edit-compile-run cycle of seconds instead of minutes, as any change of code immediately propagates to the rendering process.

Disadvantages

  • No collision detection: Quil only draws, but doesn't retain knowledge about the objects it has drawn. Therefore it can't do collision detection. Any collision detection will have to be implemented outside of quil.
  • Limited 3D: While Quil offers 3d primitives, there is no support for programmable pipeline constructs (shaders). There seem to be processing libraries that support this though, and the newer processing (2.0b8) also supports this, but it'll take some effort to integrate this into Quil.