el mismo que uso para todo:
Código [Seleccionar]
#define FVF_VERTEX1 (D3DFVF_XYZ|D3DFVF_NORMAL|D3DFVF_DIFFUSE|D3DFVF_TEX1)
![]() | ¡Bienvenido a Stratos! Acceder |
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes Menu
#define FVF_VERTEX1 (D3DFVF_XYZ|D3DFVF_NORMAL|D3DFVF_DIFFUSE|D3DFVF_TEX1)
CitarLa próxima versión ya será SOLO compatible 100% DX9. Es decir, que aquellos que no tengan una Radeon 9000 y pico, no podrán ver lo más mínimo.
for (int i=0;i<20;i++)
{
verts[i].color = D3DCOLOR_XRGB(255,255,255);
}
// CARA FONDO
Log("Face 1");
verts[0].x = center.x;
verts[0].y = center.y + width;
verts[0].z = center.z + width;
verts[0].tu = 0; verts[0].tv = 0;
verts[1].x = center.x + width;
verts[1].y = center.y + width;
verts[1].z = center.z + width;
verts[1].tu = 1; verts[0].tv = 0;
verts[2].x = center.x + width;
verts[2].y = center.y;
verts[2].z = center.z + width;
verts[2].tu = 1; verts[0].tv = 1;
verts[3].x = center.x;
verts[3].y = center.y;
verts[3].z = center.z + width;
verts[3].tu = 0; verts[0].tv = 1;
// CARA IZQUIERDA
Log("Face 2");
verts[4].x = center.x;
verts[4].y = center.y + width;
verts[4].z = center.z;
verts[4].tu = 0; verts[0].tv = 0;
verts[5].x = center.x;
verts[5].y = center.y + width;
verts[5].z = center.z + width;
verts[5].tu = 1; verts[0].tv = 0;
verts[6].x = center.x;
verts[6].y = center.y;
verts[6].z = center.z + width;
verts[6].tu = 1; verts[0].tv = 1;
verts[7].x = center.x;
verts[7].y = center.y;
verts[7].z = center.z;
verts[7].tu = 0; verts[0].tv = 1;
// CARA DERECHA
Log("Face 3");
verts[8].x = center.x + width;
verts[8].y = center.y + width;
verts[8].z = center.z;
verts[8].tu = 0; verts[0].tv = 0;
verts[9].x = center.x + width;
verts[9].y = center.y + width;
verts[9].z = center.z + width;
verts[9].tu = 1; verts[0].tv = 0;
verts[10].x = center.x + width;
verts[10].y = center.y;
verts[10].z = center.z + width;
verts[10].tu = 1; verts[0].tv = 1;
verts[11].x = center.x + width;
verts[11].y = center.y;
verts[11].z = center.z;
verts[11].tu = 0; verts[0].tv = 1;
// CARA FRONTAL
Log("Face 4");
verts[12].x = center.x;
verts[12].y = center.y + width;
verts[12].z = center.z;
verts[12].tu = 0; verts[0].tv = 0;
verts[13].x = center.x + width;
verts[13].y = center.y + width;
verts[13].z = center.z;
verts[13].tu = 1; verts[0].tv = 0;
verts[14].x = center.x + width;
verts[14].y = center.y;
verts[14].z = center.z;
verts[14].tu = 1; verts[0].tv = 1;
verts[15].x = center.x;
verts[15].y = center.y;
verts[15].z = center.z;
verts[15].tu = 0; verts[0].tv = 1;
// CARA TECHO
Log("Face 5");
verts[16].x = center.x;
verts[16].y = center.y + width;
verts[16].z = center.z;
verts[16].tu = 0; verts[0].tv = 0;
verts[17].x = center.x + width;
verts[17].y = center.y + width;
verts[17].z = center.z;
verts[17].tu = 1; verts[0].tv = 0;
verts[18].x = center.x + width;
verts[18].y = center.y + width;
verts[18].z = center.z + width;
verts[18].tu = 1; verts[0].tv = 1;
verts[19].x = center.x;
verts[19].y = center.y + width;
verts[19].z = center.z + width;
verts[19].tu = 0; verts[0].tv = 1;
for (int i=0;i<20;i++)
{
verts[i].color = D3DCOLOR_XRGB(255,255,255);
}
if (FAILED(dev->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE)))
Log("ERROR! SetRemderState: CULLING MODE");
if (m_texture->Set(dev) == false)
Log("ERROR! Setting Texture");
if (FAILED(dev->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE)))
Log("ERROR! SetTextureStageState: D3DTSS_COLOROP");
if (FAILED(dev->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE)))
Log("ERROR! SetTextureStageState: D3DTSS_COLORARG1");
if (FAILED(dev->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_DIFFUSE)))
Log("ERROR! SetTextureStageState: D3DTSS_COLORARG2");
if (FAILED(dev->SetTextureStageState(0, D3DTSS_MINFILTER, D3DTEXF_LINEAR)))
Log("ERROR! SetTextureStageState: D3DTSS_MINFILTER");
if (FAILED(dev->SetTextureStageState(0, D3DTSS_MAGFILTER, D3DTEXF_LINEAR)))
Log("ERROR! SetTextureStageState: D3DTSS_MAGFILTER");
if (FAILED(dev->DrawPrimitiveUP(D3DPT_TRIANGLELIST, 10, endlist,
sizeof(sVERTEX))))
{
Log("ERROR! Rendering object");
if (FAILED(dev->SetRenderState(D3DRS_CULLMODE, D3DCULL_CW)))
Log("ERROR! SetRemderState: CULLING MODE");
return false;
}
if (FAILED(dev->SetRenderState(D3DRS_CULLMODE, D3DCULL_CW)))
Log("ERROR! SetRemderState: CULLING MODE");
dev->GetTransform(D3DTS_VIEW,&matview);
D3DXMatrixMultiply(&Matrix,&matview,&matproj);
// calculamos los planos
m_Planes[0].a = Matrix._14 + Matrix._13; // plano cercano
m_Planes[0].b = Matrix._24 + Matrix._23;
m_Planes[0].c = Matrix._34 + Matrix._33;
m_Planes[0].d = Matrix._44 + Matrix._43;
D3DXPlaneNormalize(&m_Planes[0], &m_Planes[0]);
m_Planes[1].a = Matrix._14 - Matrix._13; // plano lejano
m_Planes[1].b = Matrix._24 - Matrix._23;
m_Planes[1].c = Matrix._34 - Matrix._33;
m_Planes[1].d = Matrix._44 - Matrix._43;
D3DXPlaneNormalize(&m_Planes[1], &m_Planes[1]);
m_Planes[2].a = Matrix._14 + Matrix._11; // plano izquierda
m_Planes[2].b = Matrix._24 + Matrix._21;
m_Planes[2].c = Matrix._34 + Matrix._31;
m_Planes[2].d = Matrix._44 + Matrix._41;
D3DXPlaneNormalize(&m_Planes[2], &m_Planes[2]);
m_Planes[3].a = Matrix._14 - Matrix._11; // plano derecha
m_Planes[3].b = Matrix._24 - Matrix._21;
m_Planes[3].c = Matrix._34 - Matrix._31;
m_Planes[3].d = Matrix._44 - Matrix._41;
D3DXPlaneNormalize(&m_Planes[3], &m_Planes[3]);
m_Planes[4].a = Matrix._14 - Matrix._12; // plano de arriba
m_Planes[4].b = Matrix._24 - Matrix._22;
m_Planes[4].c = Matrix._34 - Matrix._32;
m_Planes[4].d = Matrix._44 - Matrix._42;
D3DXPlaneNormalize(&m_Planes[4], &m_Planes[4]);
m_Planes[5].a = Matrix._14 + Matrix._12; // plano de abajo
m_Planes[5].b = Matrix._24 + Matrix._22;
m_Planes[5].c = Matrix._34 + Matrix._32;
m_Planes[5].d = Matrix._44 + Matrix._42;
D3DXPlaneNormalize(&m_Planes[5], &m_Planes[5]);
bool W3C_GFX_Frustum::CheckCube(float XCenter, float YCenter,
float ZCenter, float Size)
{
// nos aseguramos que al menos 1 punto esté en el frustum
for (short i=0;i<6;i++)
{
if(D3DXPlaneDotCoord(&m_Planes[i], &D3DXVECTOR3(XCenter, YCenter, ZCenter)) >= 0.0f)
continue;
if(D3DXPlaneDotCoord(&m_Planes[i], &D3DXVECTOR3(XCenter+Size, YCenter, ZCenter)) >= 0.0f)
continue;
if(D3DXPlaneDotCoord(&m_Planes[i], &D3DXVECTOR3(XCenter, YCenter+Size, ZCenter)) >= 0.0f)
continue;
if(D3DXPlaneDotCoord(&m_Planes[i], &D3DXVECTOR3(XCenter+Size, YCenter+Size, ZCenter)) >= 0.0f)
continue;
if(D3DXPlaneDotCoord(&m_Planes[i], &D3DXVECTOR3(XCenter, YCenter, ZCenter+Size)) >= 0.0f)
continue;
if(D3DXPlaneDotCoord(&m_Planes[i], &D3DXVECTOR3(XCenter+Size, YCenter, ZCenter+Size)) >= 0.0f)
continue;
if(D3DXPlaneDotCoord(&m_Planes[i], &D3DXVECTOR3(XCenter, YCenter+Size, ZCenter+Size)) >= 0.0f)
continue;
if(D3DXPlaneDotCoord(&m_Planes[i], &D3DXVECTOR3(XCenter+Size, YCenter+Size, ZCenter+Size)) >= 0.0f)
continue;
if(D3DXPlaneDotCoord(&m_Planes[i], &D3DXVECTOR3(XCenter+Size/2, YCenter+Size/2, ZCenter+Size/2)) >= 0.0f)
continue;
return false;
}
return true;
}
bool W3C_GFX_Font::Init(IDirect3DDevice8 *dev, HFONT handle, D3DCOLOR fcolor,
float X1, float Y1, float X2, float Y2)
{
rect->left = (long)X1;
rect->right = (long)X2;
rect->top = (long)Y1;
rect->top = (long)Y2;
if (FAILED(D3DXCreateFont(dev,handle,&font))) // aqui peta
return false;
return true;
}
float W3C_APP_Game::GetFPS()
{
unsigned long time,delay;
time = GetTickCount();
delay = time - oldTime;
oldTime = time;
return 1000.0/(double)delay;
}