Hallo,
ich möchte gerne die Breite und Höhe meiner Texturen auslesen, komme mit dem Code aus den meisten Tutorials aber nicht ganz klar. Beim Laden meiner Texturen übergebe ich für
Width und
Height beide Male
D3DX_DEFAULT. In der
MSDN steht hier nämlich:
If this value is zero or D3DX_DEFAULT, the dimensions are taken from the file. (
Link).
Folgenden Code verwende ich für das Bestimmen der Breite und Höhe:
Delphi-Quellcode:
var Texture: IDirect3DTexture9; // Hier wird eine Textur mit 184 x 119 Größe geladen
Surface: IDirect3DSurface9;
Desc: _D3DSURFACE_DESC;
Delphi-Quellcode:
Texture.GetSurfaceLevel(0, Surface);
Surface.GetDesc(Desc);
Width := Desc.Width; // = 256
Height := Desc.Height; // = 128
Hier ein kleines Beispielbild, was passiert:
http://img94.imageshack.us/img94/4004/bspd.jpg
Der gelbe Bereich ist die tatsächliche Texturgröße, wie ich sie mit Adobe Photoshop gespeichert hab (184 x 119).
Der schwarze Bereich repräsentiert die Dimensionen, die mein obiger Code liefert (256 x 128).
Offensichtlich hat das Surface wohl die nächsthöheren 2er-Potenzen für die Werte von Width und Height.
Ich würde aber gerne die tatsächliche Breite und Höhe abfragen.
Hat mir jemand einen Tipp, wie ich an diese Werte rankomme? Über das Surface scheint es so nicht zu gehen?
Vielen Dank für Tipps und Links,
Xoric
"Gods are fragile things; they may be killed by a whiff of science or a dose of common sense."
- Chapman Cohen