[slime-devel] Slime and OpenGL Interface
Sean Charles
sean.charles at objitsu.com
Thu Dec 14 17:00:04 UTC 2006
OK, in a drug fuelled moment of madness (diet-coke and a Snickers,
too much sugar I guess) I decided I want to write an OpenGL interface
to SLIME and I have been fiddling with it on and off for a few months
now, don't ask, it's not going 'that' well. :-)
I am using cl-opengl and Apple X11 X-server and it's working as
expected, I had to make a small change to the library.lisp file to
load the OpenGLUT library that I built:
(define-foreign-library glut
;;-- (sjc-03-jul-06) -- added this line to ensure my locally built
;;-- OpenGLUT library is loaded as the "glut" library!
((:and :darwin :x86) "/usr/local/lib/libopenglut.dylib")
;((:and :darwin :x86) (:framework "GLUT"))
;(:darwin (:or "libglut.dylib" "libglut.3.dylib" #-(and)
(:framework "GLUT")))
(:windows "freeglut.dll") ; XXX: is this right?
(:unix (:or "libglut.so" "libglut.so.3")))
I had to do it this way because at the time I just couldn't get the
GLUT.framework to load after many hours of head scratching. Anyhow, I
have just been trying to get the Cocoa GLUT framework to load again
(I hate being beaten by dumb machines) and I am stuck!
In an attempt to get around the blasted message:
<NSInternalInconsistencyException> Error (1002) creating CGSWindow
which appears every time it tried to load the framework, I ended up
with the following code:
;; For GLUT.framework to operate we also need to load the
Cocoa.framework
;; and the OpenGL frameworks ?!?!?!
;;
(define-foreign-library cocoa
((:and :darwin :x86) (:framework "Cocoa")))
(define-foreign-library opengl
((:and :darwin :x86) (:framework "OpenGL")))
(define-foreign-library glut
;((:and :darwin :x86) "/usr/local/lib/libopenglut.dylib")
((:and :darwin :x86) (:framework "GLUT"))
;(:darwin (:or "libglut.dylib" "libglut.3.dylib" #-(and)
(:framework "GLUT")))
(:windows "freeglut.dll") ; XXX: is this right?
(:unix (:or "libglut.so" "libglut.so.3")))
(use-foreign-library cocoa)
(use-foreign-library opengl)
(use-foreign-library glut)
(cffi:defcfun ("NSApplicationLoad" nsapplicationload) :int)
(nsapplicationload)
...which kind of worked in that the NSInternalInconsistencyException
has now gone away but when I try to run the MESADEMOS:GEARS program,
the system hangs and when I hit CTRL-C I get:
* (mesademos:gears)
^C
debugger invoked on a SIMPLE-CONDITION in thread #<THREAD "initial
thread" {122A9301}>:
interrupted at #X90009857
Type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL.
restarts (invokable by number or by possibly-abbreviated name):
0: [CONTINUE] Return from SB-UNIX:SIGINT.
1: [ABORT ] Exit debugger, returning to top level.
(SB-UNIX::SIGINT-HANDLER
#<unavailable argument>
#<unavailable argument>
#.(SB-SYS:INT-SAP #X02206D5C))
0]
...my only thoughts are that NSApplicationLoad is an Objective-C
function and that there may be a problem using (defcfun ...) to call
it.... does anybody have any idea why I am not getting my OpenGL
windows ?
Thanks,
Sean Charles.
More information about the slime-devel
mailing list