JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.phpMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Kranke Index Buffer

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


Alter: 35
Anmeldedatum: 17.06.2004
Beiträge: 269
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 22.10.2004, 02:34    Titel: Kranke Index Buffer Antworten mit Zitat

tach,
ich arbeite grade an einem *.3ds file loader den ich hinterher auch veröffentlichen werde. Das ding liefert einem dann alles was man sich wünscht von vertices bis materials.
Das laden des Vertex und Index Buffers klappt schon super. Dann hab ich mich an die materials gemacht. Ich hab mir gedacht um die subsets zu machen mach ich einfach mehrere index buffer.
Das hab ich dann in die tat umgesetzt. Und auf einmal seh ich da die kranksten grafikfehler.

Eigentlich sollten in den löchern von dem würfel farbige flächen sein aber die verstreuen sich wohl lieber im raum.
Ich hab schon alle scripts drei mal durchgecheckt. Hat irgendwer ne ahnung woran das liegen könnte?
Hier noch der code zum rendern:
Code:

      if(model[j].used==1)
      if(model[j].F3DS){
         //Objekt Transformieren
         lpD3DDevice->SetTransform(D3DTS_WORLD,&model[j].Matrix);
         // Den Datenstrom setzen
         lpD3DDevice->SetStreamSource(0,model[j].VBuffer,sizeof(CustomVertex));
          lpD3DDevice->SetVertexShader(D3D_CUSTOMVERTEX);

//materials ist die Anzahl der materials
//face[i] ist die anzahl der einträge in dem jeweiligen index buffer

         for(int i=0;i<model[j].F3DS->materials;i++){
            if(model[j].F3DS->face[i]!=0)
            {
               lpD3DDevice->SetMaterial(&model[j].F3DS->material[i]);
               lpD3DDevice->SetIndices(model[j].IBuffer[i],0);
               // Das Objekt wird dargestellt
               lpD3DDevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST,0,model[j].F3DS->face[i],0,model[j].F3DS->face[i]/3);
            }
         }
}}

_________________

Ich bin da, wer noch?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name MSN Messenger
Dr. Best
Senior JLI'ler


Alter: 35
Anmeldedatum: 17.06.2004
Beiträge: 269
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 22.10.2004, 22:09    Titel: Antworten mit Zitat

Ich hab jetzt einfach mal als drittes Argument von DrawIndexedPrimitive(...) 190 eingegeben. Und auf einmal klappt alles perfekt.
Code:
lpD3DDevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST,0,190,0,model[j].F3DS->face[i]/3);

Es liegt also offensichtlich daran. Daher meine Frage was genau ist die Bedeutung von dem Argument? Ich werd jetzt auch noch mal rum googlen. Wenn ich's rausgefunden hab sag ich's.
_________________

Ich bin da, wer noch?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name MSN Messenger
Dr. Best
Senior JLI'ler


Alter: 35
Anmeldedatum: 17.06.2004
Beiträge: 269
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 22.10.2004, 22:33    Titel: Antworten mit Zitat

Jetzt macht alles Sinn.
MinIndex und NumVertices sind dazu da zu bestimmen in welchem bereich die verwendeten vertices sind. Das ist dazu da kapazitäten zu sparen. Alle index buffer einträge die nicht in diesem bereich sind werden dann zu irgendwelchen willkürlichen vertices siehe screenshot.
BTW schöner monolog. Ich hoffe dieses topic wird irgendwann mal jemandem den frust ersparen den ich in den letzten zwei tagen hatte.
_________________

Ich bin da, wer noch?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name MSN Messenger
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