Fix for callbacks under windows from Andrew Lyon.
[cl-glfw.git] / README
blob9f562f40fc6a4872298c4ea8d87d0e2787dc6def
1 Top-level ASDF packages:
3  * cl-glfw - GLFW bindings for Common Lisp.
4  * cl-glfw-opengl-version_* - OpenGL bindings for Common Lisp.
5  * cl-glfw-glu (requires cl-glfw-opengl) - OpenGL Utilities bindings for Common Lisp.
7 ABOUT
9 A public domain set of CFFI bindings and convenience macros for the GLFW, GLU
10 and OpenGL libraries.
12 The OpenGL bindings are automatically generated from the spec-files from 
13 http://www.opengl.org/registry/
15 The GLU binding was hand-coerced from a tidied up header file, through swig, so
16 it's pretty much a direct mapping onto the API.
18 cl-glfw is independent of cl-glfw-opengl-* and cl-glfw-glu. cl-glfw-opengl and
19 cl-glfw-glu may be used without cl-glfw. cl-glfw-glu, however, does depend on
20 cl-glfw-opengl. So, you should be able to use cl-glfw and
21 cl-glfw-opengl/cl-glfw-glu independently of each other; for example, using
22 cl-glfw with cl-opengl, or cl-opengl's glut with cl-glfw-opengl, should work
23 fine.
25 Check out the examples/ directory for more of a guide through.
28 WINDOWS NOTES
30 For SBCL on Windows, you will need to download the GLFW DLLs pack
31 (glfw-2.6.bin.WIN32.zip), which you can find on http://glfw.sf.net/
33 I would recommend either placing the MINGW version of the GLFW.dll in either
34 your \WINDOWS\SYSTEM32 directory, or in the current directory for distributed
35 binaries.
38 MAC OS X NOTES
40 For SBCL on Mac OS X, you will want to have the libglfw.dylib somewhere where
41 cl-glfw can find it. It's probably easiest to just include it in the current
42 directory of your application.
45 THREADING
47 GLFW threading WILL PROBABLY BREAK YOUR LISP IMAGE. I would advise seeking
48 other avenues if you require threading in your applications. The bindings
49 remain in cl-glfw, but, I should emphasise once again, that they probably are
50 going to mess up things like garbage collection in your lisp, and apparently
51 some things to do with stacks and allocations aswell.
54 NAME MANGLING STYLE
56 All function/constant names are 'lispified', that is dash-separated, instead of
57 camel-case.  Suffixes and acronyms are kept together as one word. Library
58 prefixes are expressed as their package. Constants are surrounded by the '+'
59 characters as lisp convention dictates.  Some examples:
61 glfwOpenWindow -> glfw:open-window
62 glVertex3fv -> gl:vertex-3fv
63 gluBuild2DMipmaps -> glu:build-2d-mipmaps
64 GL_FOG_INDEX -> gl:+fog-index+
65 GL_LIGHT0 -> gl:+light-0+
68 TYPE CONVERSION IN CL-GLFW-OPENGL
70 Functions that take a predictable c-array input or return an output have
71 automatic-translators for lisp-sequences (array and vectors). However, this
72 will require an extra allocation. cffi:pointer types will be passed straight
73 through. Eg. (gl:vertex-3fv #(1.0 0.0 1.0)) will work as expected.
75 All function parameters of types (warning: not in GLU yet) GLfloat or GLdouble
76 are automatically wrapped in an appropriate coerce. All integer types are
77 expected to be acceptable to CFFI. 
79 See individual function documentation for cl-glfw conversion details.
80 cl-glfw-glu does not do automatic float translations.
83 PLATFORMS
84     SBCL Linux x86
85     SBCL Linux amd64/x86_64
86     SBCL Windows 32-bit
87     SBCL Mac OS X 32-bit Intel
88     Others: Let me know.
91 LINKS
93     http://repo.or.cz/w/cl-glfw.git - The working online git repository
94     http://glfw.sf.net/ - The homepage for GLFW
95     http://common-lisp.net/project/cffi/ - Dependency library CFFI's homepage
96     http://www.sbcl.org/ - Our favoured implementation of Common Lisp
97     http://www.opengl.org/ - OpenGL 3D graphics library API
100 ALTERNATIVES
102     http://common-lisp.net/project/cl-opengl/ - Alternative set of OpenGL (with GLUT) bindings
103     http://cl-sdl.sf.net/ - Seemingly abandoned SDL and OpenGL bindings
106 Enjoy.
107 Bill
108 airbaggins@users.sourceforge.net