Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Sistemas de Particulas con d3d-pointsprites

Iniciado por CoLSoN2, 06 de Diciembre de 2002, 03:22:38 PM

« anterior - próximo »

CoLSoN2

                                Estoy trasteando con este tema pero tengo un pequeño problema. Si pongo la cámara justamente perpendicular a las particulas se ve de coña, aún cuando "strafeo" con la cámara, también. se ve así:



pero si cambio la dirección de la cámara a alguna no-perpendicular, se ve así:



el codigo de render es este:



D3DXMATRIX mat;

D3DXMatrixIdentity(&mat);

dev->SetTransform(D3DTS_WORLD,&mat);



if (!texture->Set(dev))

 Log("Texture Set faileD!");



dev->SetRenderState(D3DRS_POINTSPRITEENABLE, true);

dev->SetRenderState(D3DRS_POINTSCALEENABLE,  true);

dev->SetRenderState(D3DRS_POINTSIZE,     FtoDW(0.08f));

dev->SetRenderState(D3DRS_POINTSIZE_MIN, FtoDW(size.min));

dev->SetRenderState(D3DRS_POINTSIZE_MAX, FtoDW(size.max));

dev->SetRenderState(D3DRS_POINTSCALE_A,  FtoDW(0.00f));

dev->SetRenderState(D3DRS_POINTSCALE_B,  FtoDW(0.00f));

dev->SetRenderState(D3DRS_POINTSCALE_C,  FtoDW(1.00f));

dev->SetRenderState(D3DRS_SRCBLEND, srcBlendMode);

dev->SetRenderState(D3DRS_DESTBLEND, destBlendMode);



dev->SetVertexShader(FVF_PARTICLE1);



VERTEX_PARTICLE *verts;

verts = new VERTEX_PARTICLE[GetActiveParts()];

int j=0;

for (int i=0;i<numParticles;i++)

{

 if (particles[i].age < particles[i].lifetime)

 {

  verts[j].position = particles[i].pos;

  verts[j].color = D3DCOLOR_ARGB((BYTE)particles[i].color.a,

   (BYTE)particles[i].color.r,(BYTE)particles[i].color.g,

   (BYTE)particles[i].color.b);

  verts[j].pointsize = particles[i].size;

  j++;

 }

}



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");



char cad[50];

sprintf(cad,"Active: %d",GetActiveParts());

Log(cad);

if (FAILED(dev->DrawPrimitiveUP(D3DPT_POINTLIST,j,verts,sizeof(VERTEX_PARTICLE))))

 Log("Render failed!");



dev->SetRenderState( D3DRS_POINTSPRITEENABLE, FALSE );

dev->SetRenderState( D3DRS_POINTSCALEENABLE,  FALSE );





sí, no uso Vb. pero no quiero usarlos hasta que funcione bien todo el tema :P Por cierto, creeis que sería más óptimo lockear/unlockear a cada render para cambiar las propiedades de las partículas, o eso consumiría muchos recursos?

thx in advance :P                                
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

Degiik

                                Creo que todo se resume en Billboarding.

http://www.stratos-ad.com/forums2/viewtopi...?t=631&start=45                                
egiik: h-O-5 hoja/ingestión 100mo Vida suspendida ( 1 día )

ethernet


CoLSoN2

                                degiik creo que con los pointsprites de d3d no hace falta usar billboarding, por eso lo digo...

ethernet hay que dar algun aliciente para que la gente los lea xD y una imagen vale más que mil palabras ;P                                
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

CoLSoN2

                                ya está arreglado, era una parida del zbuffer ;P                                
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

ethernet

No digas quien te ha dado la idea colson de lo del zbuffer xD no no lo digas (tengo log's) ;PPP

CoLSoN2

                                xDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD

vale, a sio el ethernet :P                                
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

ethernet

va tio, no era necesario q me dieras credito xDDD :)

CoLSoN2

                                va, dejemos de contestar a este estúpido post XD                                
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor






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.