Code:
static texture_normal_vertex quad[4] =
{
// tu tv nx ny nz x y z
{ 0.0f, 1.0f, vector(0.0f, 1.0f, 0.0f), vertex(-15.0f, 0.0f, -15.0f) },
{ 0.0f, 0.0f, vector(0.0f, 1.0f, 0.0f), vertex(-15.0f, 0.0f, 15.0f) },
{ 1.0f, 1.0f, vector(0.0f, 1.0f, 0.0f), vertex( 15.0f, 0.0f, -15.0f) },
{ 1.0f, 0.0f, vector(0.0f, 1.0f, 0.0f), vertex( 15.0f, 0.0f, 15.0f) }
};
Code:
struct texture_normal_vertex
{
// GL_T2F_N3F_V3F
texture t;
vector n;
vertex v;
};
Code:
struct texture
{
float u, v;
};
Code:
enum {x, y, z, w};
struct vertex
{
// GL_V3F
float m[3];
vertex() { m[x] = m[y] = m[z] = 0.0f; };
vertex(float a, float b, float c) { m[x] = a; m[y] = b; m[z] = c; };
float& operator[](int i)
{
return m[i];
}
float operator[](int i) const
{
return m[i];
}
float Length() const
{
return sqrt(m[x] * m[x] + m[y] * m[y] + m[z] * m[z]);
}
vertex& Normalize()
{
float length = Length();
m[x] = m[x] / length;
m[y] = m[y] / length;
m[z] = m[z] / length;
return *this;
}
friend vertex operator + (const vertex& a, const vertex& b)
{
vertex v(a[x] + b[x], a[y] + b[y], a[z] + b[z]);
return v;
}
friend vertex operator - (const vertex& a, const vertex& b)
{
vertex v(a[x] - b[x], a[y] - b[y], a[z] - b[z]);
return v;
}
friend vertex operator - (const vertex& b)
{
vertex v(-b[x], -b[y], -b[z]);
return v;
}
friend vertex operator * (const vertex& a, const float scale)
{
vertex v(a[x] * scale, a[y] * scale, a[z] * scale);
return v;
}
static vertex Cross(const vertex& a, const vertex& b)
{
vertex v;
v[x] = (a[y] * b[z]) - (a[z] * b[y]);
v[y] = (a[z] * b[x]) - (a[x] * b[z]);
v[z] = (a[x] * b[y]) - (a[y] * b[x]);
return v;
}
friend bool operator == (const vertex& a, const vertex& b)
{
return fabs(a[x] - b[x]) < EPSILON && fabs(a[y] - b[y]) < EPSILON && fabs(a[z] - b[z]) < EPSILON;
}
};
typedef vertex vector;
error C2440: 'initializing' : 'const float' kann nicht in 'struct texture_normal_vertex' konvertiert werden