Einzelnen Beitrag anzeigen

XoRiC

Registriert seit: 20. Sep 2005
43 Beiträge
 
RAD-Studio 2009 Arc
 
#1

DirectX9 - Texturbreite und -höhe

  Alt 23. Jan 2010, 16:55
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
Miniaturansicht angehängter Grafiken
bsp_152.jpg  
"Gods are fragile things; they may be killed by a whiff of science or a dose of common sense."
- Chapman Cohen
  Mit Zitat antworten Zitat