 |
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
X-FILE Super JLI'ler
Anmeldedatum: 12.07.2003 Beiträge: 349
Medaillen: Keine
|
Verfasst am: 25.09.2003, 22:27 Titel: Bilder als Texturanimation anstaendig laden |
|
|
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...  |
|
Nach oben |
|
 |
X-FILE Super JLI'ler
Anmeldedatum: 12.07.2003 Beiträge: 349
Medaillen: Keine
|
Verfasst am: 25.09.2003, 22:58 Titel: |
|
|
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 |
|
 |
Christian Rousselle Site Admin

Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 26.09.2003, 08:35 Titel: |
|
|
Wie ist denn der genaue Fehler aus dem Visual C++ Arbeitsbereich? |
|
Nach oben |
|
 |
X-FILE Super JLI'ler
Anmeldedatum: 12.07.2003 Beiträge: 349
Medaillen: Keine
|
Verfasst am: 26.09.2003, 11:18 Titel: |
|
|
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 |
|
 |
Christian Rousselle Site Admin

Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 26.09.2003, 11:54 Titel: |
|
|
Hast du mal mit dem Debugger geschaut, ob die Werte alle gültig sind? An welcher Stelle (Codezeile) kommt die Meldung genau? |
|
Nach oben |
|
 |
X-FILE Super JLI'ler
Anmeldedatum: 12.07.2003 Beiträge: 349
Medaillen: Keine
|
Verfasst am: 26.09.2003, 12:01 Titel: |
|
|
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
EDIT:
Halt - die Aussage muss ich korrigieren. Das Funktioniert nur, wenn ich Create und AddTexture zusammen aufrufe.... also direkt nach der Reihe.... |
|
Nach oben |
|
 |
Christian Rousselle Site Admin

Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 26.09.2003, 12:13 Titel: |
|
|
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 |
|
 |
X-FILE Super JLI'ler
Anmeldedatum: 12.07.2003 Beiträge: 349
Medaillen: Keine
|
Verfasst am: 26.09.2003, 13:18 Titel: |
|
|
Hmmm naja. Da wo ich es jetzt eingebaut habe... ist das schon ziemlich groß geworden....
Fragst du wegen durchkuckens, oder warum? |
|
Nach oben |
|
 |
Christian Rousselle Site Admin

Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 26.09.2003, 13:20 Titel: |
|
|
ja. |
|
Nach oben |
|
 |
X-FILE Super JLI'ler
Anmeldedatum: 12.07.2003 Beiträge: 349
Medaillen: Keine
|
Verfasst am: 26.09.2003, 14:47 Titel: |
|
|
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
Danke.... |
|
Nach oben |
|
 |
LeeDiGer Super JLI'ler

Anmeldedatum: 31.08.2003 Beiträge: 366 Wohnort: Duisburg Medaillen: Keine
|
Verfasst am: 26.09.2003, 16:18 Titel: |
|
|
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 |
|
 |
X-FILE Super JLI'ler
Anmeldedatum: 12.07.2003 Beiträge: 349
Medaillen: Keine
|
Verfasst am: 26.09.2003, 17:08 Titel: |
|
|
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.  |
|
Nach oben |
|
 |
X-FILE Super JLI'ler
Anmeldedatum: 12.07.2003 Beiträge: 349
Medaillen: Keine
|
Verfasst am: 26.09.2003, 22:16 Titel: |
|
|
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...
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 Hab was uebersehen und demnach alles was man falsch machen kann, falsch gemacht *seufz* |
|
Nach oben |
|
 |
|
|
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
|