On Sun, Mar 10, 2013 at 06:24:34PM -0500, Bart Botta wrote:
Hi,
thank you for your reply!
[...]
Most of the problem is https://github.com/3b/cl-opengl/issues/27 (glaref and (setf glaref) are slow).
Another problem is that the compiler doesn't know what types the values are, so has to call generic math routines instead of using CPU ops directly.
Storing the source arrays as specialized lisp arrays, and declaring types (and/or check-type) would help with both problems, though writing to the gl-array would still be slow until that bug is fixed. You could work around the bug by using cffi:mem-aref directly instead of glaref,
I have just replaced all glaref calls with:
(cffi:mem-aref (gl::gl-array-pointer array) :float offset)
and the results are surprisingly good!
seconds | gc | consed | calls | sec/call | name ---------------------------------------------------- 3.924 | 0.000 | 0 | 2,500 | 0.001569 | CL-GL-UTILS:LERP-GL-ARRAY ---------------------------------------------------- 3.924 | 0.000 | 0 | 2,500 | | Total
or if you are using shaders, you could just do the interpolation on the GPU.
That's a good idea indeed! My fault is that i still stick with the old fixed pipeline opengl paradigm.
Thank you for your help! C.