this is my cube(x,y,z,nx,ny,nz,tu,tv):
//front
{-0.5f, 0.5f,-0.5f,0,0,0,0.0f,0.0f},
{ 0.5f, 0.5f,-0.5f,0,0,0,1.0f,0.0f},
{-0.5f,-0.5f,-0.5f,0,0,0,0.0f,1.0f},//triangle 1
{-0.5f,-0.5f,-0.5f,0,0,0,0.0f,1.0f},
{ 0.5f,-0.5f,-0.5f,0,0,0,1.0f,1.0f},
{ 0.5f, 0.5f,-0.5f,0,0,0,1.0f,0.0f},//triangle 2
//back
{-0.5f, 0.5f, 0.5f,0,0,0,1.0f,0.0f},
{ 0.5f, 0.5f, 0.5f,0,0,0,0.0f,0.0f},
{-0.5f,-0.5f, 0.5f,0,0,0,1.0f,1.0f},//triangle 1
{-0.5f,-0.5f, 0.5f,0,0,0,1.0f,1.0f},
{ 0.5f,-0.5f, 0.5f,0,0,0,0.0f,1.0f},
{ 0.5f, 0.5f, 0.5f,0,0,0,0.0f,0.0f},//triangle 2
//top
{-0.5f, 0.5f, 0.5f,0,0,0,0.0f,0.0f},
{ 0.5f, 0.5f, 0.5f,0,0,0,1.0f,0.0f},
{-0.5f, 0.5f,-0.5f,0,0,0,0.0f,1.0f},//triangle 1
{-0.5f, 0.5f,-0.5f,0,0,0,0.0f,1.0f},
{ 0.5f, 0.5f,-0.5f,0,0,0,1.0f,1.0f},
{ 0.5f, 0.5f, 0.5f,0,0,0,1.0f,0.0f},//triangle 2
//bottom
{-0.5f,-0.5f, 0.5f,0,0,0,1.0f,0.0f},
{ 0.5f,-0.5f, 0.5f,0,0,0,0.0f,0.0f},
{-0.5f,-0.5f,-0.5f,0,0,0,1.0f,1.0f},//triangle 1
{-0.5f,-0.5f,-0.5f,0,0,0,1.0f,1.0f},
{ 0.5f,-0.5f,-0.5f,0,0,0,0.0f,1.0f},
{ 0.5f,-0.5f, 0.5f,0,0,0,0.0f,0.0f},//triangle 2
//right
{ 0.5f, 0.5f,-0.5f,0,0,0,0.0f,0.0f},
{ 0.5f, 0.5f, 0.5f,0,0,0,1.0f,0.0f},
{ 0.5f,-0.5f,-0.5f,0,0,0,0.0f,1.0f},//triangle 1
{ 0.5f,-0.5f,-0.5f,0,0,0,0.0f,1.0f},
{ 0.5f,-0.5f, 0.5f,0,0,0,1.0f,1.0f},
{ 0.5f, 0.5f, 0.5f,0,0,0,1.0f,0.0f},//triangle 2
//left
{-0.5f, 0.5f,-0.5f,0,0,0,1.0f,0.0f},
{-0.5f, 0.5f, 0.5f,0,0,0,0.0f,0.0f},
{-0.5f,-0.5f,-0.5f,0,0,0,1.0f,1.0f},//triangle 1
{-0.5f,-0.5f,-0.5f,0,0,0,1.0f,1.0f},
{-0.5f,-0.5f, 0.5f,0,0,0,0.0f,1.0f},
{-0.5f, 0.5f, 0.5f,0,0,0,0.0f,0.0f},//triangle 2
I tried to calculate it by this function (from andypike.com)
D3DXVECTOR3 cCube::GetTriangeNormal(D3DXVECTOR3* vVertex1, D3DXVECTOR3* vVertex2, D3DXVECTOR3* vVertex3)
{
D3DXVECTOR3 vNormal;
D3DXVECTOR3 v1;
D3DXVECTOR3 v2;
D3DXVec3Subtract(&v1, vVertex2, vVertex1);
D3DXVec3Subtract(&v2, vVertex3, vVertex1);
D3DXVec3Cross(&vNormal, &v1, &v2);
D3DXVec3Normalize(&vNormal, &vNormal);
return vNormal;
}
and then running for each triangle and calculate his normals, but it''s not good, one half of each face is visible, the other one is not...
why is that?