GLX is an X protocol extension that provides access to OpenGL rendering. OpenGL commands are encapsulated in X protocol stream. Thus, one can run their OpenGL applicaion on a machine that does not even have a video card (if they manage to boot it), by just remotely connecting to it and launching the CLX+GLX application, which in turn will connect to the specified X server. Needless to say, the server should support the GLX extension.
Here you can get a diff against CLX package
available in CLiki (version 0.6 at
the moment). To apply the patch, go to the folder where your CLX is, and
do the
command. Then compile and load the source as usual, using
the .asd system definition. The code for float-decomposition is
CMUCL and SBCL specific so it runs only on these implementations at the
moment.
patch < path/to/glx.diff
When you have it loaded, do this to try out the super-duper
rotating-square:
(Substitute the host and display value as you need. Passing
"localhost" as HOST parameter might be required.)
CL-USER> (in-package :gl-test)
#<PACKAGE "GL-TEST">
GL-TEST> (test 'anim :host "" :display 0)
The code is in a very early stage of developement (actually it is more like a proof-of-concept implementation to check if it can be done at all) so I suggest you use nested X server for experimenting. If you have any questions, suggestions, patches or anything else to offer, contact me by email.
There's also some media I have created to show off: a screenshot and a movie and another movie.
(define-rendering-command tex-env-fv 112
(target card32)
(pname card32)
(param (list float32 (ecase pname
(#.+texture-env-mode+ 1)
(#.+texture-env-color+ 4)))))
now work. The sequence argument must be of required length and
contain elements of specified type and can be one of:
(test 'gears*)
example work just fine (except the skewed geometries, which I think
are due to a transcription error).