public
Description: idiomatic opengl bindings for clojure
Homepage:
Clone URL: git://github.com/ztellman/penumbra.git
name age message
file .gitignore Fri Sep 25 09:06:42 -0700 2009 represent ternary operator with ? [ztellman]
file README.textile Mon Nov 16 22:40:18 -0800 2009 fix indentation [ztellman]
file epl-v10.html Mon Jul 13 19:51:07 -0700 2009 add license [ztellman]
directory lib/ Tue Oct 06 22:51:35 -0700 2009 add 64-bit libs [ztellman]
directory src/ Sat Dec 19 10:11:38 -0800 2009 update convolution example [ztellman]
README.textile

Penumbra is an idiomatic wrapper for OpenGL in Clojure, by way of JOGL.

This Java/C code

glEnable(GL_LIGHT0);
glPushMatrix();
glTranslated(0, 0, -10);
glBegin(GL_QUADS);
glVertex3d(0, 0, 0);
glVertex3d(0, 1, 0);
glVertex3d(1, 1, 0);
glVertex3d(1, 0, 0);
glEnd();
glPopMatrix();

becomes

(enable :light0)
(push-matrix
  (translate 0 0 -10)
  (draw-quads
    (vertex 0 0 0)
    (vertex 0 1 0)
    (vertex 1 1 0)
    (vertex 1 0 0)))

Numerous sample programs can be found in src/examples. They include clean, functional implementations of Tetris and Asteroids, and a GPU-driven Mandelbrot viewer.

A long term goal for Penumbra is to simplify GPU programming as much as possible, allowing for both advanced graphical effects and general computation. This is a work in progress, but this n-body simulation is a good example of what’s possible.

Installation directions can be found here.