Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Problemas con primitivas en D3D

Iniciado por Ogl2k, 01 de Enero de 1970, 01:00:00 AM

« anterior - próximo »

Ogl2k

                                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:                                

HgH

                                ¿Cual es el formato de los vértices?                                
gH _ TLOTB
..................
"No queremos estar obligados, por nada ni nadie, a pensar sólo en lo que es más comercial. Siempre seremos, antes que nada, programadores"

- Equipo de Zigurat -

NeLo

                                ¿Cómo defines el FVF?
                               
Drowning deep in my sea of loathing

NeLo

                                Ups, te adelantaste :lengua:
                               
Drowning deep in my sea of loathing

HgH

                                Un minutillo :ojo:                                
gH _ TLOTB
..................
"No queremos estar obligados, por nada ni nadie, a pensar sólo en lo que es más comercial. Siempre seremos, antes que nada, programadores"

- Equipo de Zigurat -

BeRSeRKeR

                                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 http://www.planetquake.com/digitalys">DiGiTALYS
La web del motor http://run.to/illusion3d">Illusion3D

[ Este Mensaje fue editado por: BeRSeRKeR el 2002-09-06 14:56 ]                                
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

HgH

                                Tendríamos que habernos dado cuenta cuando no había un SetStreamSource()...
Eso me pasa por no leer con detenimiento las cosas :lengua:                                
gH _ TLOTB
..................
"No queremos estar obligados, por nada ni nadie, a pensar sólo en lo que es más comercial. Siempre seremos, antes que nada, programadores"

- Equipo de Zigurat -

Astharoth

                               
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.
                               

Ogl2k

                                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:                                

Ogl2k

                                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:                                

BeRSeRKeR

                                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
                               
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

Ogl2k

                                Al final era un fallo en un parametro del DDSURFACEDESC2 :lengua:.

Gracias a todos por la ayuda :ojo:.                                






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.