Tengo un problemilla al dibujar una primitiva en D3D. Uso TRIANGLE_STRIP y me dibuja la primitiva y la colorea segun los colores de cada vertice, pero no muestra la textura. Este es el codigo que uso:
hres = lpDevice->BeginScene();
hres = lpDevice->SetTexture(0, Sprite.Buffer);
hres = lpDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, D3DFVF_TLVERTEX, Sprite.Vertex, 4, D3DDP_WAIT );
hres = lpDevice->EndScene();
¿Alguna idea?
Gracias :ojo:
¿Cual es el formato de los vértices?
¿Cómo defines el FVF?
Ups, te adelantaste :lengua:
Un minutillo :ojo:
Veo que sigues utilizando D3D7 :sonriendo:
Pues está utilizando el FVF D3DFVF_TLVERTEX que viene definido como (D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_SPECULAR | D3DFVF_TEX1)
o sea que no debe ser problema del FVF...
Pues lo único que se me ocurre ahora mismo es que no hayas especificado los texture stage states correctos...hmm prueba a poner esto
lpD3DDev->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
lpD3DDev->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_DIFFUSE);
lpD3DDev->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1);
lpD3DDev->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_DISABLE);
no recuerdo si en D3D7 los texture stage states son como en la versión 8...pero si no, por ahí andarán :ojo:
Por cierto, D3D8 mejoró mucho con respecto a D3D7 así que cuando puedas échale un vistazo :riendo:
HTH
Saludos
_________________
Visita:
La web de
DiGiTALYSLa web del motor
Illusion3D[ Este Mensaje fue editado por: BeRSeRKeR el 2002-09-06 14:56 ]
Tendríamos que habernos dado cuenta cuando no había un SetStreamSource()...
Eso me pasa por no leer con detenimiento las cosas :lengua:
Hola
[Berseker]
Por cierto, D3D8 mejoró mucho con respecto a D3D7 así que cuando puedas échale un vistazo
Bueno.. yo diria en vez de "mejoro mucho" algo como "se convirtio en algo decente" .. aun a costa de "pulirse" el soporte 2D (cosa que al parecer reintroducen en Dx9)
Seguro que cuando le de el vistazo (aunque sea a las :guay: se le van las ganas de comerse la cabeza con ese problemilla..
Saludos, Astharoth.
BeRSeRKeR, he probado a añadir los texture stage states que me has puesto pero sigue sin funcionar. Si que tienen el mismo formato en DX7 que en DX8.
¿Podria ser porque no carga correctamente la textura aunque no me de mensaje de error o porque le pongo algo mal al DDSDESC2 cuando creo la superficie de la textura?
PD: Se que las DX7 son antiguas, pero son las unicas que todavia tienen DDraw :lengua:
El DDSDESC2 lo ajusto de esta manera para cargar la textura:
ZeroMemory(&ddsd, sizeof(ddsd));
ddsd.dwSize = sizeof(DDSURFACEDESC2);
ddsd.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT | DDSD_PIXELFORMAT | DDSD_TEXTURESTAGE;
ddsd.ddsCaps.dwCaps = DDSCAPS_TEXTURE;
ddsd.ddsCaps.dwCaps2 = DDSCAPS2_TEXTUREMANAGE;
ddsd.dwWidth = bm.bmWidth;
ddsd.dwHeight = bm.bmHeight;
if (pdd->CreateSurface(&ddsd, &pdds, NULL) != DD_OK)
¿¿Me olvido de algo?? :triste:
Pufff la verdad es que ya no me acuerdo de cómo se cargaba una textura en D3D7. Ya te digo que ahora es muchísimo más fácil con D3D8...¡no tiene nada que ver! :sonriendo:
Saludos
Al final era un fallo en un parametro del DDSURFACEDESC2 :lengua:.
Gracias a todos por la ayuda :ojo:.