tengo el siguiente codigo que genera los vertices: (no ai cara suelo)
// 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);
}
y este para renderizarlo..
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");
el problema está que io le aplico esta texturA:
(http://www.warcraft3es.com/sky1.GIF)
y me sale esto ..
(http://www.warcraft3es.com/skyShot.JPG)
alguien sabe k leches pasa? oO
NOTA: lo que se renderiza no es negro negro, sino negro con unas lineas gris claro, nose, como si se hiciese un motion blur a la textura :
Estás modulando la textura con el diffuse. ¿Tienes diffuse?, porque si no lo tienes, te saldrá todo negro. No modules si no lo necesitas, utiliza SELECT_ARG1
A mí me recuerda a cuando tratas de cargar una imagen que, o bien no es potencia de 2, o no es del mismo formato (ya sea en cuanto a profundidad de color o compresión) que el que admite el cargador.
si tengo diffuse, todo blanco:
for (int i=0;i<20;i++)
{
verts[i].color = D3DCOLOR_XRGB(255,255,255);
}
la textura es 128x128 y RGB 24bits
¿tienes la iluminación activada?
¿Es un tga?
es bmp
no tengo iluminacion activada
una pregunta, ai algo que pueda hacer para que en una sola sentencia se pongan a Default todos los TextureStageStage?
¿ y el FVF como lo tienes?
el mismo que uso para todo:
#define FVF_VERTEX1 (D3DFVF_XYZ|D3DFVF_NORMAL|D3DFVF_DIFFUSE|D3DFVF_TEX1)
¿Y el bmp está guardado sin compresión? A veces pasan cosas curiosas y basta con editar el bmp y volver a guardarlo sin cambiar nada.
Si en el FVF tienes FVF_NORMAL y no defines la normal en el cubo, es lógico que te salga mal. Quítale lo de FVF_NORMAL.
ombre, no uso nada de iluminacion, y tampoco uso normales en el terreno usando ese mismo FVF y se me ve perfectamente, pero voi a probar..... nop, sigue =
Hola Colson :)
Emm.. no estoy nada puesto en Direct3D pero en OpenGL me ha pasado alguna vez algo parecido y era por culpa de que las normales estaban apuntando hacia el interior del cubo ! XD prueba a mirar si ell error viene de ahi :P
Posiblemente no lo sea, pero es relativamente facil de ver :P
para ke sirven las normales aparte de para iluminacion ? (t recuerdo k la tengo desactivada)
¿Porque no pones la estructura sVertex?
¿Puede ser que tengas un problema al cargar la textura y poer eso se vea negro, puesto que le pasas un NULL?
BUeno, creo que las normales a parte de las luces indican por que cara se mapea la textura no ? uyy me parece que la estoy cagando XD
pa eso tan las coordenadas de textura.
sVERTEX: el ke usaba al principio:
struct sVERTEX {
float x,y,z;
float nx, ny, nz;
D3DCOLOR color;
float tu,tv;
};
sVERTEX2, el que uso aora:
struct sVERTEX2 {
float x,y,z;
float tu,tv;
};
Citar
¿Puede ser que tengas un problema al cargar la textura y poer eso se vea negro, puesto que le pasas un NULL?
podria ser si fuera negro, pero ya e dicho que lo raro es que no es negro, es negro pero desde el centro y cada vez mas difuminado hacia los lados hay columas grises. es decir, imagina un degradado lineal de negro a gris oscuro y luego negro, pos algo asi.
Creo que he visto el problema. Joder nos ponemos a pensar cosas raras y la solución a veces es TRIVIAL.
Tu has puesto esto:
verts[12].tu = 0; verts[0].tv = 0;
¿NO DEBERIA SER verts[12].tv=0 ?
ESTAS ASIGNANDO SOLO EL ELEMENTO DEL ARRAY 0 A LA COORDENADA V!!!
DING DING DING!!
Premio para el caballero xDDDDDDD
vaya tonteriaaa
si, ia sale bien thxxxx a to2