Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: Ogl2k en 01 de Enero de 1970, 01:00:00 AM

Título: Problemas con primitivas en D3D
Publicado por: Ogl2k en 01 de Enero de 1970, 01:00:00 AM
                                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:                                
Título: Problemas con primitivas en D3D
Publicado por: HgH en 01 de Enero de 1970, 01:00:00 AM
                                ¿Cual es el formato de los vértices?                                
Título: Problemas con primitivas en D3D
Publicado por: NeLo en 01 de Enero de 1970, 01:00:00 AM
                                ¿Cómo defines el FVF?
                               
Título: Problemas con primitivas en D3D
Publicado por: NeLo en 01 de Enero de 1970, 01:00:00 AM
                                Ups, te adelantaste :lengua:
                               
Título: Problemas con primitivas en D3D
Publicado por: HgH en 01 de Enero de 1970, 01:00:00 AM
                                Un minutillo :ojo:                                
Título: Problemas con primitivas en D3D
Publicado por: BeRSeRKeR en 01 de Enero de 1970, 01:00:00 AM
                                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 DiGiTALYS
La web del motor Illusion3D

[ Este Mensaje fue editado por: BeRSeRKeR el 2002-09-06 14:56 ]                                
Título: Problemas con primitivas en D3D
Publicado por: HgH en 01 de Enero de 1970, 01:00:00 AM
                                Tendríamos que habernos dado cuenta cuando no había un SetStreamSource()...
Eso me pasa por no leer con detenimiento las cosas :lengua:                                
Título: Problemas con primitivas en D3D
Publicado por: Astharoth en 01 de Enero de 1970, 01:00:00 AM
                               
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.
                               
Título: Problemas con primitivas en D3D
Publicado por: Ogl2k en 01 de Enero de 1970, 01:00:00 AM
                                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:                                
Título: Problemas con primitivas en D3D
Publicado por: Ogl2k en 01 de Enero de 1970, 01:00:00 AM
                                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:                                
Título: Problemas con primitivas en D3D
Publicado por: BeRSeRKeR en 01 de Enero de 1970, 01:00:00 AM
                                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
                               
Título: Problemas con primitivas en D3D
Publicado por: Ogl2k en 01 de Enero de 1970, 01:00:00 AM
                                Al final era un fallo en un parametro del DDSURFACEDESC2 :lengua:.

Gracias a todos por la ayuda :ojo:.