Avatar billede nubi19 Nybegynder
29. september 2004 - 08:59 Der er 1 kommentar og
1 løsning

Sprites i D3D 9.0 får forkert størrelse

Hejsa, jeg har lige (endnu) et problem med direct 3d 9, når jeg laver en sprite og indlæser texturen fra en fil på 75x25 pixels, så bliver det "renderede" billede langt større (ca. 100x30 tror jeg), hvordan hulen kan det være ? Jeg lader ID3DXSPRITE.Draw tage NULL som parameter for størrelsen, hvis jeg selv angiver den mangler en stor del af billedet.

Er der en omregningsfaktor mellem alm. pixels i et bitmap billede og spritens texture størrelse, som jeg så har overset ?
Avatar billede jpvj Nybegynder
29. september 2004 - 09:08 #1
Hej!

Uden at ane noget om C programmering og DirectX, vil jeg forsøge at give dig dette, som jeg fandt ved en søgning på google:

Fra http://www.mvps.org/directx/faq/dx8gr_faq.htm


Q. When I draw an image using ID3DXSprite::Draw() with 1:1 scaling, the sprite is different than the original image size.  Why?
Since the image file is loaded into a texture, the bitmap is scaled to match the capabilities of the hardware. In general, this means that images that have dimensions that are not powers of 2 will be scaled up to the nearest power of 2.

When loading an image with D3DXCreateTextureFromFileEx(), you can pass a pointer to a D3DXIMAGE_INFO structure, which will be filled with information about the source image. You can then get the size of the texture using IDirect3DTexture::GetLevelDesc() and calculate the required scaling factor for 1:1 rendering:

LPDIRECT3DTEXTURE8 pText;
D3DXIMAGE_INFO info;
D3DXCreateTextureFromFileEx(....,&info,....,&pText);
D3DSURFACE_DESC desc;
pText->GetLevelDesc(0,&desc);
D3DXVECTOR2 vScaling;
vScaling.x=info.Width/desc.Width;
vScaling.y=info.Height/desc.Height;
Avatar billede nubi19 Nybegynder
29. september 2004 - 09:56 #2
Super sweet, takker for hjælpen nu spiller det :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester