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
|
Verfasst am: 12.06.2005, 17:52 Titel: |
|
|
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 |
|
 |
DirectXer Dark JLI'ler

Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 12.06.2005, 19:07 Titel: |
|
|
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
Gruß DirectXer |
|
Nach oben |
|
 |
Dr. Best Senior JLI'ler

Alter: 34 Anmeldedatum: 17.06.2004 Beiträge: 269 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 12.06.2005, 19:41 Titel: |
|
|
Öhm, gibt's da irgendwas was ich über char-arrays net weiß oder wie ?
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 |
|
 |
DirectXer Dark JLI'ler

Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 12.06.2005, 19:50 Titel: |
|
|
nö, liegt ja net am char-Array sondern an pobject  |
|
Nach oben |
|
 |
Dr. Best Senior JLI'ler

Alter: 34 Anmeldedatum: 17.06.2004 Beiträge: 269 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 12.06.2005, 19:59 Titel: |
|
|
Wieso ist das denn ungültig? _________________
Ich bin da, wer noch? |
|
Nach oben |
|
 |
Patrick Dark JLI Master

Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
|
Nach oben |
|
 |
Dr. Best Senior JLI'ler

Alter: 34 Anmeldedatum: 17.06.2004 Beiträge: 269 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 12.06.2005, 20:24 Titel: |
|
|
DirectXer hat Folgendes geschrieben: | nö, liegt ja net am char-Array sondern an pobject  |
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 |
|
 |
DirectXer Dark JLI'ler

Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 12.06.2005, 20:31 Titel: |
|
|
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 |
|
 |
Dr. Best Senior JLI'ler

Alter: 34 Anmeldedatum: 17.06.2004 Beiträge: 269 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 12.06.2005, 20:45 Titel: |
|
|
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 |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 11.07.2005, 14:47 Titel: |
|
|
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 |
|
 |
HomeLess_PunkDrummer JLI Master Trainee

Alter: 36 Anmeldedatum: 28.11.2004 Beiträge: 583 Wohnort: Alter Joghurtbecher an der A4 Medaillen: Keine
|
Verfasst am: 11.07.2005, 19:42 Titel: |
|
|
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 |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 11.07.2005, 21:32 Titel: |
|
|
tjo, mit vc 6.0 gings glaub ich auch, aber mit .net kann ich das einfach net kompilieren. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
Dr. Best Senior JLI'ler

Alter: 34 Anmeldedatum: 17.06.2004 Beiträge: 269 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 11.09.2005, 22:27 Titel: |
|
|
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 .
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 |
|
 |
|