Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1102
  • Last Modified:

Finding the Width of a DirectX 9 Texture

I've written a graphics engine for a 2d game using the DirectX 9 'Sprite' system.
I simply need to know how to find the widths of strangely dimensioned textures during runtime (eg 80x60, 400x120, etc...)
0
TimNyborg
Asked:
TimNyborg
  • 2
  • 2
1 Solution
 
CroowCommented:

It sounds like you can solve this with the GetLevelDesc method.

LPDIRECT3DTEXTURE9 pTexture;

      D3DSURFACE_DESC desc;
      pTexture->GetLevelDesc(0,&desc);
      int width = desc.Width;
      int height = desc.Height;


The D3DSURFACE_DESC structure has a lot of other members, but I doubt they'd be very helpful to you.

Good luck
0
 
TimNyborgAuthor Commented:
I've tried that method, but level 0's width and height are converted to powers of 2, equal to or greater than the original dimensions

ie 40x80 becomes 64x128
Is there
0
 
TimNyborgAuthor Commented:
whoops

*Is there a way to keep the original size? As far as I can tell, the textures are being expanded to meet 2^n sizes, but that doesn't matter when you go to draw them as sprites, because the extra area is transparent

I just need to find the centers of the actual original image so I can place image on top
0
 
CroowCommented:
Well then give this a try ...


      if(SUCCEEDED(D3DXCreateTextureFromFile(pDevice,pSrcFile,&pTexture)))
            bTexLoaded = true;

       D3DXIMAGE_INFO info;
       hr = D3DXGetImageInfoFromFile(pSrcFile,&info);

       int width = info.Width;
       int height = info.Height;
0

Featured Post

Important Lessons on Recovering from Petya

In their most recent webinar, Skyport Systems explores ways to isolate and protect critical databases to keep the core of your company safe from harm.

  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now