Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
schneidi74 Senior JLI'ler

Anmeldedatum: 14.05.2004 Beiträge: 243
Medaillen: Keine
|
Verfasst am: 26.10.2004, 13:12 Titel: Problem mit X-Files |
|
|
Ich bin gerade im letzten Kapitel vom Buch und hab ein kleines Problem mit den x-Files. Ich hab zum üben die klasse erstmal nahezu unverändert übernommen, so wie Sie im Buch vorkam. Jetzt hab ich das Problem, wenn ich beiliegendes X-File Cube.x beispielsweise lade kracht mir das Programm komplett ab. Lade ich ein selbsterstelltes x-File was weder textur noch großartige materialien hat, wird's angezeigt.
Hat jemand eine Ahnung woran das liegen könnte? _________________ -+- SchNeiDi74 -+-
-+- www.creative-games.de -+- |
|
Nach oben |
|
 |
Fallen JLI MVP


Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 26.10.2004, 13:22 Titel: |
|
|
Fehlende Texturen? |
|
Nach oben |
|
 |
schneidi74 Senior JLI'ler

Anmeldedatum: 14.05.2004 Beiträge: 243
Medaillen: Keine
|
Verfasst am: 26.10.2004, 14:06 Titel: |
|
|
Kann eigentlich nicht sein, weil auch cube.x von der Buch-CD keine Texture hat.
Ich glaub ich bin schon einen schritt weiter. Es muss an der Ladefunktion liegen:
Code: |
BOOL C3DObject::Load(char* xfile)
{
LPD3DXBUFFER lpMaterialBuffer;
D3DXLoadMeshFromX(xfile,
D3DXMESH_MANAGED,
m_lpD3DDevice,
NULL,
&lpMaterialBuffer,
NULL,
&m_nNumMaterials,
&m_lpMesh);
// Zeiger auf die verwendeten Materialien
D3DXMATERIAL* lpMaterials = (D3DXMATERIAL*)lpMaterialBuffer->GetBufferPointer();
// Fehler für Materialien und Texturen anlegen
m_lpMeshMaterials = new D3DMATERIAL9[m_nNumMaterials];
m_lpMeshTextures = new char*[m_nNumMaterials];
// Materialien und Texturen kopieren
for(int i=0;i<m_nNumMaterials;i++)
{
m_lpMeshMaterials[i] = lpMaterials[i].MatD3D;
m_lpMeshMaterials[i].Ambient = m_lpMeshMaterials[i].Diffuse;
// wenn Textur vorhanden
if(NULL != lpMaterials[i].pTextureFilename)
{
m_lpMeshTextures[i] = new char[strlen(lpMaterials[i].pTextureFilename)+14+1];
strcpy(m_lpMeshTextures[i],"../../media/x/");
strcat(m_lpMeshTextures[i],lpMaterials[i].pTextureFilename);
m_lpResManager->AddTexture(m_lpMeshTextures[i]);
}
else
{
m_lpMeshTextures[i] = NULL;
}
}
return TRUE;
}
|
Es scheint irgendwo mit den Materialien zu tun zu haben glaub ich?! _________________ -+- SchNeiDi74 -+-
-+- www.creative-games.de -+- |
|
Nach oben |
|
 |
Fallen JLI MVP


Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 26.10.2004, 14:20 Titel: |
|
|
Naja fast würde ich sagen:
Code: | // Zeiger auf die verwendeten Materialien
D3DXMATERIAL* lpMaterials = (D3DXMATERIAL*)lpMaterialBuffer->GetBufferPointer();
// Fehler für Materialien und Texturen anlegen
m_lpMeshMaterials = new D3DMATERIAL9[m_nNumMaterials];
m_lpMeshTextures = new char*[m_nNumMaterials];
// Materialien und Texturen kopieren
for(int i=0;i<m_nNumMaterials;i++)
{
m_lpMeshMaterials[i] = lpMaterials[i].MatD3D;
m_lpMeshMaterials[i].Ambient = m_lpMeshMaterials[i].Diffuse;
// wenn Textur vorhanden
if(NULL != lpMaterials[i].pTextureFilename)
{
m_lpMeshTextures[i] = new char[strlen(lpMaterials[i].pTextureFilename)+14+1];
strcpy(m_lpMeshTextures[i],"../../media/x/");
strcat(m_lpMeshTextures[i],lpMaterials[i].pTextureFilename);
m_lpResManager->AddTexture(m_lpMeshTextures[i]); //Könnte hiermit was zu tun haben
}
else
{
m_lpMeshTextures[i] = NULL;
}
} |
|
|
Nach oben |
|
 |
schneidi74 Senior JLI'ler

Anmeldedatum: 14.05.2004 Beiträge: 243
Medaillen: Keine
|
Verfasst am: 26.10.2004, 16:08 Titel: |
|
|
Hm, wenn ich die Zeile aber zur Probe mal weglasse kack das Programm auch ab. Irgenwdie versteh ich das ganze ding nicht. Immerhin ist das wirklich 100% so wie im Buch und in den Beispielen beschrieben...
Ansonsten könnte es ja nur am ResourceManager mit dem AddTexture scheitern. Das ist aber auch wie im Buch drin!?!
Code: |
void CResourceManager::AddTexture(LPCSTR lpFileName)
{
// testen, ob die Textur bereits vorhanden ist
LPDIRECT3DTEXTURE9 lpTexture = GetTexture(lpFileName);
// wenn sie nicht vorhanden ist, wird sie wie
// gewohnt erzeugt
if(!lpTexture)
{
D3DXIMAGE_INFO ImageInfo;
D3DXGetImageInfoFromFile(lpFileName,&ImageInfo);
D3DXCreateTextureFromFileEx(m_lpD3DDevice,
lpFileName,
ImageInfo.Width,
ImageInfo.Height,
1,0,
D3DFMT_UNKNOWN,
D3DPOOL_MANAGED,
D3DX_FILTER_NONE,
D3DX_FILTER_NONE,
0,0,0,
&lpTexture);
// und in die Map unter ihrem Namen eingefügt
m_MapTextures[lpFileName] = lpTexture;
}
}
|
_________________ -+- SchNeiDi74 -+-
-+- www.creative-games.de -+- |
|
Nach oben |
|
 |
Fallen JLI MVP


Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 26.10.2004, 16:13 Titel: |
|
|
Warum steppst du nicht mal beim Debuggen durch den Code und findest die Stelle heraus an dem das Programm abkackt. |
|
Nach oben |
|
 |
schneidi74 Senior JLI'ler

Anmeldedatum: 14.05.2004 Beiträge: 243
Medaillen: Keine
|
Verfasst am: 26.10.2004, 16:28 Titel: |
|
|
Allen Anschein nach kackt er bei dieser Zeile ab:
D3DXMATERIAL* lpMaterials = (D3DXMATERIAL*)lpMaterialBuffer->GetBufferPointer(); _________________ -+- SchNeiDi74 -+-
-+- www.creative-games.de -+- |
|
Nach oben |
|
 |
Fallen JLI MVP


Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 26.10.2004, 16:30 Titel: |
|
|
Dann prüfe mal ob lpMaterialBuffer in Ordnung ist. (simpel: if(!lpMaterialBuffer) return;) |
|
Nach oben |
|
 |
schneidi74 Senior JLI'ler

Anmeldedatum: 14.05.2004 Beiträge: 243
Medaillen: Keine
|
Verfasst am: 26.10.2004, 16:40 Titel: |
|
|
Selbst dabei krampft er schon ab:
Code: |
if(!lpMaterialBuffer)
{
return FALSE;
}
|
Aber warum er das macht? Ich weiß es nicht. _________________ -+- SchNeiDi74 -+-
-+- www.creative-games.de -+- |
|
Nach oben |
|
 |
Fallen JLI MVP


Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 26.10.2004, 16:46 Titel: |
|
|
Steppe mal dahin und sage mir was er sagt wenn du den Ausdruck überwachen lässt von lpMaterialBuffer |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 26.10.2004, 19:23 Titel: |
|
|
Also ich wollte auch XFiles anzeigen, auch genau mit der Funktion, hatte aber immer Probleme. Die XFiles aus dem Buch funktionierten wunderbar, aber alle anderen nicht. Ich wollte mit Blender modelleiren, konnte er nicht laden. (LoadMeshFromXY schlug fehlmit dem Fehlercode, die Datei sei ungültig oder so).
Möglich das es daran liegt, da deine Problemzeile ja direkt dahinter liegt. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
schneidi74 Senior JLI'ler

Anmeldedatum: 14.05.2004 Beiträge: 243
Medaillen: Keine
|
Verfasst am: 26.10.2004, 19:54 Titel: |
|
|
Hallo FallenAngel,
hab das jetzt eben mal gemacht.
ich hab das codemäßig jetzt so:
Code: |
D3DXLoadMeshFromX(xFile,
D3DXMESH_MANAGED,
m_lpD3DDevice,
NULL,
&lpMaterialBuffer,
NULL,
&m_nNumMaterials,
&m_lpMesh);
if(!lpMaterialBuffer)
{
return FALSE;
}
|
Beim &lpMaterialBuffer zeigt er mir beim ausführen diesen Wert an:
&lpMaterialBuffer 0x0012f8a4 "ÌÌÌÌÐZh"
bei lpMaterialBuffer in der if-Schleife das:
lpMaterialBuffer 0xcccccccc
da kann doch was nicht richtig sein... _________________ -+- SchNeiDi74 -+-
-+- www.creative-games.de -+- |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 06.11.2004, 10:31 Titel: |
|
|
schreib doch mal einfache
Code: |
if(FAILED(D3DXLoadMeshFromX())
{
//Fehlermeldung ausgeben
}
|
Solche ladefunktionen sollte man immer überprüfen, damit erspart man sich viel Arbeit. Ich mach die Ausgabeimmer in ne Date, wenns abgestürtzt ist seh ich dann direkt ob ne DX Funktion fehlgeschlagen ist.[/code] _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
schneidi74 Senior JLI'ler

Anmeldedatum: 14.05.2004 Beiträge: 243
Medaillen: Keine
|
Verfasst am: 06.11.2004, 16:50 Titel: |
|
|
Es muss irgendwie am Resourcemangager liegen an der AddTexture Funktion.
Habe jetzt einmal das Beispiel von der DXSDK durchprobiert was XFiles läd und ohne die AddTexture Funktion in meine Anwendung eingearbeitet. Jetzt geht das laden ohne Probleme. Muss jetzt nur mal gucken wie ich die Texturen davon jetzt am besten verwalte. _________________ -+- SchNeiDi74 -+-
-+- www.creative-games.de -+- |
|
Nach oben |
|
 |
Fallen JLI MVP


Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 07.11.2004, 17:49 Titel: |
|
|
Wenn du denh RessourceManager vom Buch benutzt sollteste den mal vollstndig auf std:.string umstellen, damit hatte ich vorher auch so einige Probleme die damit schnell zu beheben waren. |
|
Nach oben |
|
 |
|