Hallo,
mein Problem ist, dass ich einen gesuchten Key in der Map finden kann, obwohl er nicht drin ist. Klingt komisch, ist aber so.
Zu Erst rufe ich die Methode AddTexture auf. Ich übergebe den Dateipfad
und überprüfe dann, ob diese Textur schon geladen wurde. Wenn sie noch
nicht geladen wurd, also der Dateipfad in der Map nicht gefunden wurde,
sollte die Methode GetTexture NULL zurückgeben. Nachdem ich allerings
eine Textur hinzugefügt habe, gibt GetTexture nicht mehr NULL zurück,
auch wenn die Textur noch nicht geladen wurde.
Insgesamt sollten 37 Texturen geladen werden, es wurde aber nur eine geladen.
Ich weiß nicht wo das Problem ist. Hoffe mir kann jemand helfen.
Hier der Code:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
LPDIRECT3DTEXTURE9 CResourceManager::GetTexture(LPCSTR lpTextureName){
std::map<LPCSTR, LPDIRECT3DTEXTURE9>::iterator result;
result = m_MapTextures.find(lpTextureName);
if(result == m_MapTextures.end())
{
MessageBox(0, "NULL", "RManager", MB_OK | MB_ICONINFORMATION);//melden, dass nichts gefunden wurde
return NULL;
}
MessageBox(0, result->first, "RManager", MB_OK | MB_ICONINFORMATION);//den key ausgeben (es wurde was gefunden)
return result->second;
}
void CResourceManager::AddTexture(LPCSTR lpFileName){
LPDIRECT3DTEXTURE9 lpTexture = GetTexture(lpFileName);
char debugBuffer[250];
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);
m_MapTextures[lpFileName] = lpTexture;
// sprintf(debugBuffer, "Hinzugefügt:\n%s", lpFileName);
// MessageBox(0, debugBuffer, "Meldung", MB_OK | MB_ICONINFORMATION);
}
else
{
sprintf(debugBuffer, "Nicht hinzugefügt:\n%s", lpFileName);
// MessageBox(0, debugBuffer, "Meldung", MB_OK | MB_ICONERROR);
}
}
|
MfG
MazzMan.