Ich glaub ich hab mich nicht ganz korrekt ausgedrückt zur tb2DVolumeSprite.cpp, außerdem ist mir ein Bug aufgefallen und bevor die ersten Verzweiflungsfragen kommen hier das Fixup:
Also in tb2DVolumeSprite.cpp in der Init() gibt es im Texturmanager-Zweig einen if-Block:
// werden keine Volumentexturen unterstützt?
if(m_pTexture == NULL) ...
in diesem Block am Ende muss nach der Fehlerabfrage der folgender Block gepastet werden:
|
Quellcode
|
1
2
3
4
5
6
|
// Bilddimensionen speichern
D3DSURFACE_DESC Desc;
((IDirect3DTexture9*)m_pTexture)->GetLevelDesc(0, &Desc);
m_2DSpriteInfo.fTextureHeight = (float)Desc.Height;
m_2DSpriteInfo.fTextureWidth = (float)Desc.Width;
m_2DSpriteInfo.fTextureDepth = 1.0f;
|
im else-Zweig kommt dann der schon bekannte Bereich:
|
Quellcode
|
1
2
3
4
5
6
|
// Bilddimensionen speichern
D3DVOLUME_DESC Desc;
((IDirect3DVolumeTexture9*)m_pTexture)->GetLevelDesc(0, &Desc);
m_2DSpriteInfo.fTextureHeight = (float)Desc.Height;
m_2DSpriteInfo.fTextureWidth = (float)Desc.Width;
m_2DSpriteInfo.fTextureDepth = (float)Desc.Depth;
|
Was mir auch gerade aufgefallen ist, ist dass z.Z. der Texturmanager bei Volumensprites garnicht benutzt wird. Das liegt an einem kleinen Debug-Bug:
|
Quellcode
|
1
2
|
// Texturmanager benutzen, wenn er initialisiert ist
if(false&&tbTextureManager::IsInitialized())
|
das false&& muss natürlich raus!
Außerdem fehlt im Nicht-Texturmanager-Zweig die Tiefenbestimmung:
|
Quellcode
|
1
2
3
4
|
// Bilddimensionen speichern
m_2DSpriteInfo.fTextureHeight = (float)dinfo.Height;
m_2DSpriteInfo.fTextureWidth = (float)dinfo.Width;
m_2DSpriteInfo.fTextureDepth = (float)dinfo.Depth;
|
also die letzte Zeile noch nachtragen.
Ich hoffe das wars jetzt wirklich :-(