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 

Bilder als Texturanimation anstaendig laden

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
X-FILE
Super JLI'ler



Anmeldedatum: 12.07.2003
Beiträge: 349

Medaillen: Keine

BeitragVerfasst am: 25.09.2003, 22:27    Titel: Bilder als Texturanimation anstaendig laden Antworten mit Zitat

Hallo,

hat jemand von euch ne Idee, wie ich Bilder, die spaeter mal eine Animation ergeben sollen sinnvoll vor Spielbeginn laden kann? Bisher mache ich das leider zur Laufzeit und das geht ja gar nicht.

Aber ich muss ehrlich gestehen, mir faellt nicht ein, wie ich das vorher machen soll....

Danke... Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
X-FILE
Super JLI'ler



Anmeldedatum: 12.07.2003
Beiträge: 349

Medaillen: Keine

BeitragVerfasst am: 25.09.2003, 22:58    Titel: Antworten mit Zitat

Oder fragen wir gleich konkreter - auch wenn das dann jetzt nicht mehr so recht zu "Fragen" passen mag. Eher schon Sprachen. *sorry*

Ich hab da jetzt einfach mal was ausprobiert:
Code:

void CTexLaden::AddTexture(LPDIRECT3DDEVICE9 lpDevice, LPCSTR Filename)
{
   m_lpDevice = lpDevice;

   LPDIRECT3DTEXTURE9 lpTexture;

   
      D3DXIMAGE_INFO ImgInfo;
   
      D3DXGetImageInfoFromFile(Filename,&ImgInfo);

      D3DXCreateTextureFromFileEx(m_lpDevice,
                        Filename,
                        ImgInfo.Width,
                        ImgInfo.Height,
                        1,0,
                        D3DFMT_UNKNOWN,
                        D3DPOOL_MANAGED,
                        D3DX_FILTER_NONE,
                        D3DX_FILTER_NONE,
                        0,0,0,&lpTexture);

      m_GenAnimationVec.push_back(lpTexture);
   
}

Andere Klasse im Init:

char FileTex[128];

   for(int i=0; i<30; i++)
   {
      sprintf(FileTex, "TestX/DX/ani/anitst%d.tga", i+1);
      TexLaden->AddTexture(m_lpD3DDevice, FileTex);
   }



Sollte ja eigentlich alle Bilder in den Vector m_Gen.... laden. Tut es aber nicht. Stattdessen gibts nen Fehler auf das LPDIRECT3DDEVICE9. Dieses ist aber gueltig. Ich verstehe das nicht....
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Christian Rousselle
Site Admin


Alter: 48
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 26.09.2003, 08:35    Titel: Antworten mit Zitat

Wie ist denn der genaue Fehler aus dem Visual C++ Arbeitsbereich?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
X-FILE
Super JLI'ler



Anmeldedatum: 12.07.2003
Beiträge: 349

Medaillen: Keine

BeitragVerfasst am: 26.09.2003, 11:18    Titel: Antworten mit Zitat

Hmmm... bin mir nicht sicher ob du das meinst, aber er sagt immer mein geliebtes:
"Anwednung mit xC0000005" abgebrochen. Das ist eigentlich alles. Access Violation. Wobei ich das nicht begreife..... An alle anderen Klassen die dort initialisiert werden wird das Device auch weitergegeben - ohne Fehler....
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Christian Rousselle
Site Admin


Alter: 48
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 26.09.2003, 11:54    Titel: Antworten mit Zitat

Hast du mal mit dem Debugger geschaut, ob die Werte alle gültig sind? An welcher Stelle (Codezeile) kommt die Meldung genau?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
X-FILE
Super JLI'ler



Anmeldedatum: 12.07.2003
Beiträge: 349

Medaillen: Keine

BeitragVerfasst am: 26.09.2003, 12:01    Titel: Antworten mit Zitat

Die Fehlermeldung kommt genau bei m_lpDevice = lpDevice.

Werte sind alle gueltig. Seltsam ist ja auch, dass wenn ich folgendes habe:

Code:

Initcode:

Gen->Create(m_lpD3DDevice, 1);


Funktion:

void CTexLade::Create(LPDIRECT3DDEVICE9 lpDevice, int AnimationSpeed)
{
   m_lpDevice = lpDevice;

   m_fAnimSpeed = AnimationSpeed;


   CustomPlane PlaneVertices[] =
   {
      {-5.0f, -5.0f, 0.0f, 0xFF00FF00, 0.0f, 0.0f, -1.0f, 0.0f, 1.0f},
      {-5.0f,  5.0f, 0.0f, 0xFF00FF00, 0.0f, 0.0f, -1.0f, 0.0f, 0.0f},
      { 5.0f,  5.0f, 0.0f, 0xFF00FF00, 0.0f, 0.0f, -1.0f, 1.0f, 0.0f},
      { 5.0f,  5.0f, 0.0f, 0xFF00FF00, 0.0f, 0.0f, -1.0f, 1.0f, 0.0f},
      { 5.0f, -5.0f, 0.0f, 0xFF00FF00, 0.0f, 0.0f, -1.0f, 1.0f, 1.0f},
      {-5.0f, -5.0f, 0.0f, 0xFF00FF00, 0.0f, 0.0f, -1.0f, 0.0f, 1.0f}
   };

[...] Vertexbuffer und Co... egal...



Dann geht das..... da beschwert er sich nicht. Nur wenn ich das Device mit Texturenladen verbinde Sad

EDIT:

Halt - die Aussage muss ich korrigieren. Das Funktioniert nur, wenn ich Create und AddTexture zusammen aufrufe.... also direkt nach der Reihe....
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Christian Rousselle
Site Admin


Alter: 48
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 26.09.2003, 12:13    Titel: Antworten mit Zitat

Das hört sich alles so an, als ob irgendwo ein Objekt nicht initialisiert wurde. Ist das ein großes Projekt oder was kleineres?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
X-FILE
Super JLI'ler



Anmeldedatum: 12.07.2003
Beiträge: 349

Medaillen: Keine

BeitragVerfasst am: 26.09.2003, 13:18    Titel: Antworten mit Zitat

Hmmm naja. Da wo ich es jetzt eingebaut habe... ist das schon ziemlich groß geworden....

Fragst du wegen durchkuckens, oder warum?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Christian Rousselle
Site Admin


Alter: 48
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 26.09.2003, 13:20    Titel: Antworten mit Zitat

ja.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
X-FILE
Super JLI'ler



Anmeldedatum: 12.07.2003
Beiträge: 349

Medaillen: Keine

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

Hoi,

ich glaub ich weiß woran es liegt. Ich habe die Zeiger falsch erzeugt. Aber nur vielleicht. Mal sehen. Wenns ned passt, bin ich wieder da Wink

Danke....
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
LeeDiGer
Super JLI'ler



Anmeldedatum: 31.08.2003
Beiträge: 366
Wohnort: Duisburg
Medaillen: Keine

BeitragVerfasst am: 26.09.2003, 16:18    Titel: Antworten mit Zitat

Bei Acces Violation hasse mit 98%iger Wahrscheinlichkeit nen Zeigerfehler eingebaut. Ich kenne das. In die Texturklasse würd ich ne Abfrage einbauen, die prüft, ob die Textur korrekt geladen werden konnte, bzw. überhaupt gefunden wurde. Wenn ein Fehler auftritt, soll eine Messagebox erscheinen. Das hilft bei der Fehlersuche.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
X-FILE
Super JLI'ler



Anmeldedatum: 12.07.2003
Beiträge: 349

Medaillen: Keine

BeitragVerfasst am: 26.09.2003, 17:08    Titel: Antworten mit Zitat

Hmmm... naja. waere ja schoen wenn er so weit kommen wuerd. Dann koennte ich das tun. Aber er steht ja in erster Zeile... da hilft die beste Fehlersuche nicht.
Dass die Access Violation zu 100% an einem Zeigerfehler liegt ist auch fast sicher, nur ist die Suche bei tausenden von Zeigern ja furchtbar einfach. Wink Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
X-FILE
Super JLI'ler



Anmeldedatum: 12.07.2003
Beiträge: 349

Medaillen: Keine

BeitragVerfasst am: 26.09.2003, 22:16    Titel: Antworten mit Zitat

Hmmm.... ich hab zwar einen Fehler ausgemerzt, aber der jetzige Fehler ist mir auch wieder schleierhaft. Ich schreib mal alles wat ich hab (habs zusammengekuerzt aufs noetigste... Sad

Code:


Init in einer anderen Klasse:
CAniTex* tst = new CAniTex();
   
   char FileTex[128];

   for(int i=0; i<30; i++)
   {
      sprintf(FileTex, "TestX/DX/ani/ani%d.tga", i+1);
      tst->AddTexture(m_lpD3DDevice, FileTex);
   }

Erzeugen in anderer Klasse:

   CAniTex* Gen = new CAniTex;
   
   D3DXVECTOR3 AniPos = Position;

   Gen->Create(m_lpD3DDevice, 1);

   Gen->Load(AniPos, TestExpl, 1);



Tja. Um noch zu sagen wo der Fehler auftritt. Im SetTexture(0, Liste). Dort stuerzt das Programm ab. Kommentiere ich aus, oder Verknuepfe ich es an obige Bedingung, gehts - es wird halt nix angezeigt....
Es scheint an den unterschiedlichen Zeigern zu liegen?? Also einmal tst und einmal Gen....
Aber wie umgehen....

Vielen Dank....

EDIT:

Ok hat sich erledigt Wink Hab was uebersehen und demnach alles was man falsch machen kann, falsch gemacht *seufz*
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik 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