Hi Gordon, Thibault, Thanks for the replies regarding the contiguity of the memory in a std::vector. That at least solves half of the problem.
> > Use &yourvector[0] to get a float* pointer to the beginning of the > array. How do I define the vec4array so that &yourvector[0] is absolutely aligned, i.e. a multiple of (in my case) 16? With a float array, on MS compilers, I would do __declspec(align(16)) float* myarray = new float[4 * MY_ARRAY_SIZE]. From what I understand, and from the MSDN documentation (http://msdn.microsoft.com/en-us/library/83ythb65.aspx) this is the correct way to guarantee this. #pragma pack 16 doesn't always do what you expect... If I do __declspec(align(16)) Vec4Array* myarray = new Vec4Array, I'm guaranteed that "myarray" is 16 byte aligned, but what about the contents of the array? Especially if I do lots of ->push_back so that the std::vector resizes and goes somewhere else. Even if I do __declspec(align(16)) Vec4Array* myarary = new Vec4Array(MY_ARRAY_SIZE) I don't think I'm guaranteed 16 byte alignment of the first vector entry... (I think the gcc equivalent to __declspec(align(X)) is __aligned__(X), by the way). Regards, David
_______________________________________________ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org