[Openmcl-devel] opengl
Gary Byers
gb at clozure.com
Thu Mar 3 12:40:03 PST 2005
On Thu, 3 Mar 2005, David Steuber wrote:
>
> GLUT is a separate framework on OS X. I haven't done anything with
> it. I was under the impression that GLUT was somehow related to the
> aux stuff from the red book. Perhaps I'm wrong?
GLUT provides a portable (and not-too-deep) layer for OpenGL programs
that deals with inherently non-portable things (like window management
and event handling.) In theory (and in practice, to a large degree),
GLUT programs are portable between OSX and Windows and X11 and ...
"ccl:examples;opengl-ffi.lisp" is an (early) example that uses GLUT.
GLUT_BITMAP_HELVETICA_10 is (conditionally) defined as
#define GLUT_BITMAP_HELVETICA_10 ((void*)6)
(in /System/Library/Frameworks/GLUT.framework/Headers/glut.h ),
and neither the interface translator nor the rest of OpenMCL believes
much in the concept of constant-valued pointers. (There's presumably
-some- difference between (%INT-TO-POINTER 6) and a pointer returned
from a call to #_malloc; the former is "constant valued" in some sense
and the latter isn't, but it's not entirely clear how to maintain that
distinction.)
SAVE-APPLICATION basically changes the type of all MACPTRs to be
CCL::DEAD-MACPTR, which is supposed to help catch cases where a
saved image references something allocated dynamically (via #_malloc).
If it decided that a pointer with a "small" address couldn't possibly
have been allocated dynamically, it could skip this and the concept
of "constant valued pointer" would be a little more meaningful. "Small"
might be something arbitrary, like "16 or fewer significant bits in
the address, if it's treated as a signed integer."
If that "concept of a constant-valued MACPTR" existed, the interface
translator could probably translate things like ((void*)6) into
something like the result of (%INT-TO-PTR 6), but it currently doesn't
even try.
More information about the Openmcl-devel
mailing list