@ker - Ok, I've started looking at this.
First I commited you patch exactly how it was, so that at least should work for you.
Next I fixed some compile errors, particularly with Boost. Actually, I have found that when the load and unload functions are std::function there is no need to use std::bind in order to set them up. I do not know if this is also true with Boost. Maybe you can verify? The code now looks like this:
Code:
volData.m_LoadCallback = &load;
volData.m_UnloadCallback = &unload;
//volData.m_LoadCallback = polyvox_bind(&load, polyvox_placeholder_1, polyvox_placeholder_2);
//volData.m_UnloadCallback = polyvox_bind(&unload, polyvox_placeholder_1, polyvox_placeholder_2);
Lastly, I have reverted some of your commit in order to bring back the concept of volume width, height, and depth. Actually I'm still working on tidying up the interface here, but the idea will be that every volume will be a fixed size, but if you don't specify a size it will default to the maximum size allowed by int32_t (which is pretty close to infinite).
I also reverted the OpenGL example so it uses a fixed size volume again, while the BasicExample is still testing the streaming. I'm trying to keep both these examples working at all times, so any commit I make should continue to work for you. Let me know if I break something in your project...