W
whisper
Hello all,
I'm trying to use a class from Intel called SPVector3.
It hass some optimiztions for Vector Math that uses SSE.
The problem is that its declared like this:
class SPVector3 {
public:
union {
__m128 vec;
struct {
float x,y,z;
// float _spacer_;
};
};
SPVector3() {}
SPVector3(const SPVector3& v) : vec(v.vec) {}
SPVector3(const __m128 &m) : vec(m) {}
SPVector3(const F32vec4 &m) : vec(m) {}
SPVector3(const float x, const float y, const float z) :
vec(F32vec4(0.0f,z,y,x)) {}
SPVector3(const float *arr) :
vec(_mm_loadl_pi(_mm_movelh_ps(_mm_load_ss(arr+2),_mm_load_ss(arr+2)),
(__m64*)arr)) {}
operator __m128() const { return vec; }
operator F32vec4() const { return vec; }
// functions and operators...
};
But I need to pass a pointer to an opengl fuction that looks like:
void glVertexPointer(
GLint size, //The number of coordinates per vertex
GLenum type, //The data type of each coordinate in the array
GLsizei stride, //The byte offset between consecutive vertices
const GLvoid *pointer
);
How can I convert from SPVector3 to this pointer ?
wpr
I'm trying to use a class from Intel called SPVector3.
It hass some optimiztions for Vector Math that uses SSE.
The problem is that its declared like this:
class SPVector3 {
public:
union {
__m128 vec;
struct {
float x,y,z;
// float _spacer_;
};
};
SPVector3() {}
SPVector3(const SPVector3& v) : vec(v.vec) {}
SPVector3(const __m128 &m) : vec(m) {}
SPVector3(const F32vec4 &m) : vec(m) {}
SPVector3(const float x, const float y, const float z) :
vec(F32vec4(0.0f,z,y,x)) {}
SPVector3(const float *arr) :
vec(_mm_loadl_pi(_mm_movelh_ps(_mm_load_ss(arr+2),_mm_load_ss(arr+2)),
(__m64*)arr)) {}
operator __m128() const { return vec; }
operator F32vec4() const { return vec; }
// functions and operators...
};
But I need to pass a pointer to an opengl fuction that looks like:
void glVertexPointer(
GLint size, //The number of coordinates per vertex
GLenum type, //The data type of each coordinate in the array
GLsizei stride, //The byte offset between consecutive vertices
const GLvoid *pointer
);
How can I convert from SPVector3 to this pointer ?
wpr