JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=8c7aec64a58e1eaba499469a39976befMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Probleme mit Pointsprites

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
stroggi
Mini JLI'ler


Alter: 38
Anmeldedatum: 28.08.2003
Beiträge: 27
Wohnort: Gernsheim
Medaillen: Keine

BeitragVerfasst am: 05.04.2005, 21:42    Titel: Probleme mit Pointsprites Antworten mit Zitat

Da mein editor jetzt ja relativ gut funktioniert, habe ich beschlossen mich wichtigeren Dingen, wie z.B. einem Partikelsystem zu beschäftigen. Allerdings scheint dieses nicht immer so zu wollen, wie ich es will.
Für die partikel benutze ich Pointsprites, wie sie ja von DirectX9 unterstützt werden. Hier der Codeausschnitt vom Rendern der Partikel:
Code:
   pD3DDevice->SetSamplerState(0,D3DSAMP_MINFILTER,D3DTEXF_LINEAR);
   pD3DDevice->SetSamplerState(0,D3DSAMP_MAGFILTER,D3DTEXF_LINEAR);

   pD3DDevice->SetRenderState(D3DRS_ZWRITEENABLE,false);
   pD3DDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,true);
   pD3DDevice->SetRenderState(D3DRS_DESTBLEND,D3DBLEND_ONE);

   pD3DDevice->SetRenderState(D3DRS_POINTSPRITEENABLE,true);
   pD3DDevice->SetRenderState(D3DRS_POINTSCALEENABLE,true);
   pD3DDevice->SetRenderState(D3DRS_POINTSIZE,FtoDW(1.0f));
   pD3DDevice->SetRenderState(D3DRS_POINTSIZE_MIN,FtoDW(1.0f));
   pD3DDevice->SetRenderState(D3DRS_POINTSCALE_A,FtoDW(0.0f));
   pD3DDevice->SetRenderState(D3DRS_POINTSCALE_B,FtoDW(0.0f));
   pD3DDevice->SetRenderState(D3DRS_POINTSCALE_C,FtoDW(1.0f));
   pD3DDevice->SetFVF(PartikelFVF);

   pD3DDevice->SetTexture(0,lpTexture);
   for(unsigned int i=0;i<MAX_PARTICEL;i++)
   {
      // Partikel bewegen
      if(Partikel[i].bEnabled)
      {
         MovePartikel(i,uiTime);
      }

      if(Partikel[i].bEnabled)
      {
         // rendern
         sPartikelVertex *pPointVertex;
         pVertexBuffer->Lock(0,sizeof(sPartikelVertex),(void**)&pPointVertex,D3DLOCK_DISCARD);
         pPointVertex->vPos = Partikel[i].Data.vPartikelPosition;
         pPointVertex->dwColor = D3DXCOLOR(Partikel[i].Data.vColor);
         pPointVertex++;
         pVertexBuffer->Unlock();

         pD3DDevice->SetStreamSource(0,pVertexBuffer,0,sizeof(sPartikelVertex));
         pD3DDevice->DrawPrimitive(D3DPT_POINTLIST,0,1);
      }
   }
      
   pD3DDevice->SetRenderState( D3DRS_POINTSPRITEENABLE,false);
   pD3DDevice->SetRenderState( D3DRS_POINTSCALEENABLE,false);
   pD3DDevice->SetRenderState( D3DRS_ZWRITEENABLE,true);
   pD3DDevice->SetRenderState( D3DRS_ALPHABLENDENABLE,false);
   pD3DDevice->SetSamplerState(i,D3DSAMP_MINFILTER,D3DTEXF_ANISOTROPIC);


Hier jetzt mein Problem:
Wenn ich NUR die Partikel rendere, dann sieht alles perfekt aus. lasse ich allerdings vorher die Map rendern, sieht es garnicht so toll aus:



Es scheint fast so, alls würden die Partikel auf die hinteren Objekte draufgerendert werden.

Kann mir einer bei diesem Problem helfen? Hab schon die unmöglichsten Sachen ausprobiert.

*heul*
_________________
MfG Michi

http://www.roboter-projekte.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 05.04.2005, 21:48    Titel: Antworten mit Zitat

Hui 15-21 Frames, da musste was optimieren. Projezierst du da was? Ich bin der Meinung das das evtl nen ZBuffer fehler sein könnte, nur deaktivierst du den ja, mhhh was setzte denn noch so alles an States ?
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
stroggi
Mini JLI'ler


Alter: 38
Anmeldedatum: 28.08.2003
Beiträge: 27
Wohnort: Gernsheim
Medaillen: Keine

BeitragVerfasst am: 06.04.2005, 09:05    Titel: Antworten mit Zitat

Also das mit den 15-21 Frames ist kein reeler Wert, da im Hintergrund noch ein paar andere Programme gelaufen sind. Außerdem hab ich mit der Partikelanzahl etwas übertrieben (1000000 oder so).
Der Z-Buffer wird nicht getezt, da das nur Probleme mit dem AlphaBlending geben würde, aber projezieren tue ich eigentlich nicht (zumindest weis ich nichts davon).
Beim schreiben des Partikelsystems habe ich mich relativ eng an einem Beispiel von CodeSampler.com gehalten (PointSprites und Particle System (Using Point Sprites)) und da scheint es ja wohl auch ohne Probleme zu funktionieren.
_________________
MfG Michi

http://www.roboter-projekte.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
HomeLess_PunkDrummer
JLI Master Trainee


Alter: 36
Anmeldedatum: 28.11.2004
Beiträge: 583
Wohnort: Alter Joghurtbecher an der A4
Medaillen: Keine

BeitragVerfasst am: 06.04.2005, 13:40    Titel: Antworten mit Zitat

1000000? Mit Locken des Vertexbuffers? Shocked
Du könntest mal zeigen wie es ohne die Map aussieht.
Hmm probier mal das blending mit SRC / INVSRC und -dest.
Mit dem z-Buffer: Sortier sie halt der Entfernung nach, ist doch kein so großes Problem.
Was ich komisch finde sind die scheinbar ausgefransten Ränder in der Ecke des Raumes(da sehen die Partikel irgendwie zerrissen aus).
_________________
"Was die Götter angeht, so ist es mir unmöglich, zu wissen, ob sie existieren oder nicht, noch, was ihre Gestalt sei. Die Kräfte, die mich hindern, es zu wissen, sind zahlreich, und auch ist die Frage verworren und das menschliche Leben kurz."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
stroggi
Mini JLI'ler


Alter: 38
Anmeldedatum: 28.08.2003
Beiträge: 27
Wohnort: Gernsheim
Medaillen: Keine

BeitragVerfasst am: 06.04.2005, 14:11    Titel: Antworten mit Zitat

Also den Fehler konnte ich jetzt aus irgend einem Grund beheben.
Ich hatte nach dem Erstellen der Device-Schnittstelle den ZBuffer mit dem Parameter D3DZB_USEW aktiviert. Jetzt habe ich ihn mit dem Parameter D3DZB_TRUE aktiviert und sihe da, das Problem ist verschwunden!!!
Aber wieso????????? Ich deaktiviere ihn ja schließlich für das Rendern der Partikel. Er wird ist nur beim Rendern der Map aktiv.

Hier noch ein Bild, wie es jetzt aussieht mit drei Partikeleffekten, mit je 100 Partikeln:


ICH HASSE SOLCHE FEHLER/PROBLEME Confused
_________________
MfG Michi

http://www.roboter-projekte.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
HomeLess_PunkDrummer
JLI Master Trainee


Alter: 36
Anmeldedatum: 28.11.2004
Beiträge: 583
Wohnort: Alter Joghurtbecher an der A4
Medaillen: Keine

BeitragVerfasst am: 06.04.2005, 14:16    Titel: Antworten mit Zitat

Das sind aber vier Very Happy
_________________
"Was die Götter angeht, so ist es mir unmöglich, zu wissen, ob sie existieren oder nicht, noch, was ihre Gestalt sei. Die Kräfte, die mich hindern, es zu wissen, sind zahlreich, und auch ist die Frage verworren und das menschliche Leben kurz."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
stroggi
Mini JLI'ler


Alter: 38
Anmeldedatum: 28.08.2003
Beiträge: 27
Wohnort: Gernsheim
Medaillen: Keine

BeitragVerfasst am: 06.04.2005, 14:18    Titel: Antworten mit Zitat

sorry, ich kann net zählen Very Happy
_________________
MfG Michi

http://www.roboter-projekte.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum