SFML community forums
Help => Graphics => Topic started by: Tukimitzu on March 18, 2016, 08:39:33 pm
-
- I create a 1280x720 something.png image
- I change the extension to .bg
- I use sf::Texture::loadFromFile("something.bg")
- It says it can't load because maximum internal size is 1024x1024, and the image is 2048x1024
1) Why does it say the image is 2048x1024 when it is in fact 1280x720?
2) How outdated is this hardware for not being able to load a 1280x720 image?
3) Noob question: is this related to GPU or RAM?
Thanks!
-
1) Your GPU doesn't support NPOT (non power of two) texture sizes so both width and height go up to the next closest power of two
2) It sounds quite bad... I have integrated Intel laptop GPU with just GL 2.1 that is very slow and even it has NPOT and larger maximum sizes support
3) 100% GPU issue
You can browse https://github.com/SFML/SFML/blob/master/src/SFML/Graphics/Texture.cpp to learn more.
-
1) Your GPU doesn't support NPOT (non power of two) texture sizes so both width and height go up to the next closest power of two
2) It sounds quite bad... I have integrated Intel laptop GPU with just GL 2.1 that is very slow and even it has NPOT and larger maximum sizes support
3) 100% GPU issue
Very interesting! Never heard about NPOT.
This is a friend's PC by the way.
So, as far as I can tell, there are 2 problems here:
- Unavailable NPOT sizes support.
- Image is too big (even if it had NPOT size support).
1280x720 is the largest image size I'll ever load in my game, these are the backgrounds. Should I bother to reconsider the size of my backgrounds to avoid the size issue and/or the NPOT issue?
I mean, I have to draw a line where a hardware is too old to run the game. Even if I resize it to 1024x1024, there will always be an older machine that cannot run it.
Thoughts?
-
Such a machine is just beyond me, what GPU is that? My laptop was a medium class one in general (not really meant for gaming) when bought 5 years ago and it has NPOT and GL 2.1: https://www.opengl.org/wiki/NPOT_Texture
You could:
1) Split texture up programmatically or use something that does so (Thor BigTexture and BigSprite classes) but it's a bit slower and takes more graphical RAM, especially with no NPOT which makes you waste large chunks of space
2) Scale the texture to lower size when loading it, but that will make it look worse (although that's kinda cool that the game looks worse under minimal hardware requirements :P ) and requires some coding change to not assume that texture pixels correspond to drawn pixels 1:1
3) Just don't care since it's really old hardware
-
...4. Buy your friend a new graphics card if his/her b-day is soon!
-
Such a machine is just beyond me, what GPU is that?
I don't know, it is an integrated card of some sort, when we met 5 years ago he had this PC already, it is a PC for family use, so I'm guessing it is more than 8 years old.
3) Just don't care since it's really old hardware
That's what I wanted to hear ;D
4. Buy your friend a new graphics card if his/her b-day is soon!
Is 3 months soon? I hope not. ;D