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 

3DS-Loader (DX)
Gehe zu Seite Zurück  1, 2
 
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: 34
Anmeldedatum: 17.06.2004
Beiträge: 269
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 12.06.2005, 17:52    Titel: Antworten mit Zitat

Oh stimmt.
Ich glaube ich sollte mir nochmal ne halbe Stunde nehmen um das Paket auf den neusten Stand zu bringen.
Ich hab den Loader ja für meine 3D-Engine geschrieben und dieses Paket aus v 1.3 Beta zusammengestellt.
Da waren wie das mit Betas halt so ist noch einige Fehler drin unter anderem der fehlerhafte Destruktor.
In v 1.31 habe ich das bereits behoben bloß habe ich halt vergessen diese Änderung dann auch in dem Paket vorzunehmen.

Hier ist der gründlich überarbeitete Destruktor:
CPP:
   LPDIRECT3DTEXTURE8 pTTemp;
   for(int i=0;i<MatNum;i++){
      if(map[i]){
         map[i]->Release();
         pTTemp=map[i];
         for(int t=0;t<MatNum;t++){
            if(map[t]==pTTemp)
               map[t]=NULL;}}}

   for(i=0;i<sobject;i++){
      pobject=&object[i];
      SAFE_ARRAY_DELETE(pobject->name)
      if(pobject->subset[0]!=pobject->indices)
         SAFE_ARRAY_DELETE(pobject->indices)
      if(pobject->smesh>0)
         SAFE_ARRAY_DELETE(pobject->mesh)
      for(int m=0;m<MatNum;m++){
         SAFE_ARRAY_DELETE(pobject->subset[m]) }}

   for(i=0;i<MatNum;i++){
      SAFE_ARRAY_DELETE(MatName[i])
      SAFE_ARRAY_DELETE(MapFile[i])}

   if(animate)
   for(int i=0;i<=sbone;i++){
      CBoneU3D* pbone=&bone[i];
      if(pbone->skeyS>0)
         SAFE_ARRAY_DELETE(pbone->keyS)
      if(pbone->skeyR>0)
         SAFE_ARRAY_DELETE(pbone->keyR)
      if(pbone->skeyT>0)
         SAFE_ARRAY_DELETE(pbone->keyT)}

   material.clear();
   object.clear();

_________________

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



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 12.06.2005, 19:07    Titel: Antworten mit Zitat

hm, jetzt hab ich deinen überarbeiteten Destruktor eingefügt und ich krieg auch ne Access Violation!
CPP:
for(i=0;i<sobject;i++){
      pobject=&object[i];
      SAFE_ARRAY_DELETE(pobject->name) // hier natürlich
      if(pobject->subset[0]!=pobject->indices)
         SAFE_ARRAY_DELETE(pobject->indices)
      if(pobject->smesh>0)
         SAFE_ARRAY_DELETE(pobject->mesh)
      for(int m=0;m<MatNum;m++){
         SAFE_ARRAY_DELETE(pobject->subset[m]) }}


und ich hab XP; also FH, kannst beruhigt sein Wink

Gruß DirectXer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Dr. Best
Senior JLI'ler


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

BeitragVerfasst am: 12.06.2005, 19:41    Titel: Antworten mit Zitat

Öhm, gibt's da irgendwas was ich über char-arrays net weiß oder wie Rolling Eyes ?
Die kann man doch wohl auch mit delete löschen oder was ist daran sonst falsch?
Um ehrlich zu sein hab ich nur das Buch "Jetzt lerne ich Spieleprogrammierung mit C++ und DirectX" gelesen und bin zur Zeit an "3D-Effekte für Spieleprogrammierer" dran.
Den Rest hab ich aus Tutorials und der MSDN. Ich sollte vielleicht nochmal "C++ für Spieleprogrammierer" lesen um ein paar Lücken zu füllen.
_________________

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



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 12.06.2005, 19:50    Titel: Antworten mit Zitat

nö, liegt ja net am char-Array sondern an pobject Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Dr. Best
Senior JLI'ler


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

BeitragVerfasst am: 12.06.2005, 19:59    Titel: Antworten mit Zitat

Wieso ist das denn ungültig?
_________________

Ich bin da, wer noch?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name MSN Messenger
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 12.06.2005, 20:07    Titel: Antworten mit Zitat

Dr. Best
Was soll ungültig sein? Question
_________________
'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Dr. Best
Senior JLI'ler


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

BeitragVerfasst am: 12.06.2005, 20:24    Titel: Antworten mit Zitat

DirectXer hat Folgendes geschrieben:
nö, liegt ja net am char-Array sondern an pobject Wink

Wenn es ne Acces-violation wegen pobject gibt dann ist pobject doch wohl ein ungültiger Zeiger.
Aber ich versteh net so recht warum.
_________________

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



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 12.06.2005, 20:31    Titel: Antworten mit Zitat

FH hier hat Folgendes geschrieben:
Sinngemäß steht im Code vom Vector:
CPP:
//[...]
return Objekte[GefragtesObject]; 


Das legt einbe Kopie an... Die wird zurückgegeben... Daraus wird dann in unserem Code die Adresse der Kopie geholt, danach die an pobject zugewiesen, und dann die Kopie gelöscht, da diese nicht in eine neue Struktur kopiert wurde und der Aufruf des []-Operators beendet ist. damit haben wir einen vagabundierenden Zieger!
Ein Rückgabe ist bei Strukturen immer ein anlegen und löschen... Wenn man sich nen Zeiger darafu hohlt, ist der schon beim nächsten Aufruf ungültig... Und das Programm hin...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Dr. Best
Senior JLI'ler


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

BeitragVerfasst am: 12.06.2005, 20:45    Titel: Antworten mit Zitat

Ah so is das.
Dann sollte ich wohl statt SObject* pobject SObject object verwenden und so sämtliche Zeiger an einen "sicheren Ort" kopieren.
Gut zu wissen. Mach ich demnächst mal.
Danke für den Hinweis.
_________________

Ich bin da, wer noch?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name MSN Messenger
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 11.07.2005, 14:47    Titel: Antworten mit Zitat

LINK : fatal error LNK1181: Eingabedatei 'libci.lib' kann nicht geöffnet werden

den Fehler bekomm ich wenn ich das compilierne will. Hab ehrlich gesagt keine Ahnung warum, hab in der suchfunktion nix mit libci.lib gefunden, und auch in den Linker einstellungen net. Bin jetzt n bisschen verwirrt.
_________________
https://jonathank.de/games/
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: 11.07.2005, 19:42    Titel: Antworten mit Zitat

Wasn das fürne lib?

Ich hab einfach die Datein und n leeres Projekt genommen... ging.
_________________
"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
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 11.07.2005, 21:32    Titel: Antworten mit Zitat

tjo, mit vc 6.0 gings glaub ich auch, aber mit .net kann ich das einfach net kompilieren.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Dr. Best
Senior JLI'ler


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

BeitragVerfasst am: 11.09.2005, 22:27    Titel: Antworten mit Zitat

sry dass ich dieses alte Topic nochmal aufgreife aber es gibt Neuigkeiten.

Jonathan_Klein
Ich habe mir jetzt Visual C++ .net 2003 gekauft *freu* und das gleiche Problem gehabt wie du. Also habe ich mal nach libci.lib gegooglet und der zweite Link der mir angezeigt wurde war dieser hier:
http://www.scrontsoft.com/DX81.asp?pageID=1
Ich habe die libci.zip downgeloadet und in meinen VC++ lib folder extrahiert und schon hat's funktioniert Very Happy .


Außerdem werde ich den 3DS loader demnächst mal ein wenig aufmöbeln. Ich werde bald anfangen an der nächsten Version meiner Engine zu arbeiten und dabei habe ich auch einige Pläne für den Loader:
- Erstens werde ich das mit den Vektoren und der Access violation in Ordnung bringen.
- Zweitens werde ich die Berechnung der Animation effizienter machen (als ich den 3DS loader gemacht habe wusste ich noch nicht wie Matrizen funktionieren und hab alles mit D3DX gemacht).
- Drittens werde ich Funktionen einbauen um die Animation zu manipulieren, was ja z.B. für 3rd-person Spiele sehr wichtig ist.
- Und viertens werde ich Funktionen einbauen um automatisch LOD Stufen zu generieren, Punkte mit gleicher Position zusammenzufassen, unbenutzte vertices rauszuwerfen usw.

Wird noch ne Weile dauern bis ich das alles gemacht habe aber wenn's so weit ist meld ich mich hier mal wieder (bzw. in nem neuen Topic).

MfG
Dr. Best
_________________

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
Gehe zu Seite Zurück  1, 2
Seite 2 von 2

 
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