blurry images

Started by
5 comments, last by Endurion 10 years ago

My apolagy's for mot doing a full introduction of myself on my first post (I'll do that later, this site looks quite intriguing) but I'm to buisy coding atm to do that now.


anywho. I'm making a game, but I'm having an issue with importing bitmaps, i try to load them in 1:1 so that I know the pixel size of evrything, but all the images seem to be compressed and warped one way or another. here is how I go about loading in a bmp (dxd9 lib's & headers included already and whatnot)


// Loading in the bmp file (it's a 24 bit image, but changing the format doesn't seem to do anything except make it dissapear, or become a black box)

    D3DXCreateTextureFromFileEx(d3ddev,    // the device pointer
                                L"MainChar.bmp",    // the new file name
                                D3DX_DEFAULT,    // default width
                                D3DX_DEFAULT,    // default height
                                D3DX_DEFAULT,    // no mip mapping
                                NULL,    // regular usage
                                D3DFMT_A8R8G8B8,    // 32-bit pixels with alpha
                                D3DPOOL_MANAGED,    // typical memory handling
                                D3DX_DEFAULT,    // no filtering
                                D3DX_DEFAULT,    // no mip filtering
                                D3DCOLOR_XRGB(255, 0, 255),    // the hot-pink color key
                                NULL,    // no image info struct
                                NULL,    // not using 256 colors
                                &MainChar);    // load to sprite

// ^ credit to where credit's due, this is pretty much the same way DirectX tutorial.com does it, only changed the pointer name basicly.

 // show the image:

d3dspt->Draw(MainChar, NULL, &center, &position, D3DCOLOR_ARGB(255,255, 255, 255));

// and of course clear the image when done:

if (sprite != NULL)sprite->Release();

If you feel you need to see more code, I'll attach a working bit of code + img to this code (I'll leave out the background image to spare this server a few byte's of burden, wich is also why I compressed it, if you don't trust it, let me know and maybe I'll upload the code un-compressed)


any suggestions will be greatly appreciated!

Advertisement

First thought is are you aware that that load method will automatically stretch the image dimensions to a power of 2 if that's all the hardware supports (very common)?

If your bitmaps aren't power of 2 dimension, you'll need to load them into a texture in a different way, then use texture coordinates to render the correct part of the texture.

https://www.google.co.uk/search?q=texture+atlas&oq=texture+atlas&aqs=chrome..69i57j0l5.1692j0j8&sourceid=chrome&espv=210&es_sm=93&ie=UTF-8

[EDIT] I see your bitmap is 50x50, that is probably being stretched to 64x64

First thought is are you aware that that load method will automatically stretch the image dimensions to a power of 2 if that's all the hardware supports (very common)?

Doh! yes, I was aware, of this, I just completly forgot >.< Thank you! and the Texture atlas is also a good Idea. Thanks!

alright, less rush this time, since, Thanks to Aardvajk's suggestion, at least the measurements line up properly. but the images I'm getting are still blurry as such:

Blurry.png

the top left square is the image I'm using, and the 4 squares in the cyan is how my program shows it.

I've changed:

D3DFMT_A8R8G8B8 -> D3DFMT_UNKNOWN with no effect,

I've also tried a few filters with no effect (possible I'm trying the wrong filters, though I don't think filtering is the problem)

The bmp I'm using is 512x512 (2^9) 24 bit.

sorry for asking 2 questions in a row, I can normally figure this stuff out, but for some reason I can't atm.

but thank you in advance!


EDIT: Made some progress on my own; it seems like lining up the pxels to the texels is at least part of the problem, since shifting the image over by 0.5 does change how blurry it is, but I have yet to suceed at getting it chrisp.

The keyword here is directly mapping texels to pixels. Looky here (http://msdn.microsoft.com/en-us/library/windows/desktop/bb219690(v=vs.85).aspx)

Another cause of unwanted blurring may be if the backbuffer size does not match up the used client area size of the window.

Fruny: Ftagn! Ia! Ia! std::time_put_byname! Mglui naflftagn std::codecvt eY'ha-nthlei!,char,mbstate_t>

Another cause of unwanted blurring may be if the backbuffer size does not match up the used client area size of the window.

yes! that was the issue, I didn't realize that having a border shrinks the DC inside, so I got rid of the border + adjust for the pixel/texels and now all is nice and chrispy like a warm taco shell. thank you!

If you still want a border you can look into AdjustWindowRect(Ex). It calculates a window rect from the wanted client rect size and the windows (ex) styles of your window.

Fruny: Ftagn! Ia! Ia! std::time_put_byname! Mglui naflftagn std::codecvt eY'ha-nthlei!,char,mbstate_t>

This topic is closed to new replies.

Advertisement