Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
not under active development - idiomatic opengl bindings for clojure
Clojure Java
Tree: 9a8a1418cd

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
autodoc
src/penumbra
test
.gitignore
README.textile
epl-v10.html
project.clj

README.textile

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

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/example. 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.

Using Penumbra

Penumbra 0.5.0 targets Clojure 1.1.0, and 0.6.0 targets Clojure 1.2.0. Directions for installation and use in other projects can be found here.

If you have any questions, please visit the mailing list.

Something went wrong with that request. Please try again.