Table of Contents
LPSG version 0.0.1
LPSG is a library for writing high-performance graphical applications in Common Lisp, using OpenGL.
Introduction
LPSG accepts geometric data and descriptions of the OpenGL state used to render them. It processes the data in order to minimize traffic between the CPU and GPU (Graphics Processing Unit). It can also reorder the associated graphic commands, thereby reducing the number of function calls into the OpenGL driver and the number of state changes in the graphics hardware.
LPSG is still in a very early stage of development, but it will include support for common features in 3D graphical applications, such as simple text, rendering to a texture, rendering high-quality transparency, GPU-based selection, and more.
Documentation
Documentation for the LPSG API can be found here. The sources for the documentation are in the docs directory.
Example
A commented example is found in cube.lisp.
OpenGL
LPSG nominally requires OpenGL 3.3, but might be coaxed into running with earlier versions of OpenGL and (yet-to-be-identified) extensions. LPSG uses only core features of OpenGL. There is interest in eventually running with OpenGL ES 3.0.
Some future features of LPSG, as well as user code, will require newer versions of OpenGL than 3.3. There will be runtime support for determining what features are supported on a platform.
Common Lisp dependencies
LPSG depends directly on the following Common Lisp libraries, among others. More will certainly be added in the future, so it is simplest to use Quicklisp to load the LPSG project and its dependencies in one go.
- cl-opengl OpenGL interface
- sb-cga matrix library
- mathkit graphics math library
- alexandria utility library
License
LPSG is released under the Revised BSD license.