Although I do somewhat understand the reasons behind it, I find LWJGL's splitting of OpenGL methods and values across numerous classes rather annoying. Since I prefer dealing with functions anyway, I'm currently writing a Clojure module that exposes the OpenGL 3.3 core functions and constants in a single namespace.
Now the problem is, some OpenGL functions have overloads in LWJGL like for instance glBindAttribLocation has one for ByteBuffer and one for CharSequence. Now I'm saying 'problem' in the broadest sense because I'm not sure yet whether this really is one.
Can I for instance just write
(defn glBindAttribLocation [program index name]
(GL20/glBindAttribLocation program index name))
and trust that Clojure will figure out which overload to call, or do I have to do this manually with some typehint-uglyness?
On the same note, many of LWJGL's functions take floats or ints - but I hear Clojure itself only uses long and double (of the primitives that is). Does that mean that everytime I call one of these functions, whatever I have gets converted to an Integer (Float) and then from there to an int (float) whenever I call one of these functions?
long->intandfloat->double, if that is any consolation :) Calling overloaded functions really is a drag and there is no help about it.