loadImageAsPlane()

I’m glad it is useful.

I don’t think this is right. We are porting a game to Panda3d engine right now and the GUI graphics are in random res.
Before I was making games I was into modding and pretty much all the games I came across had non power-of-two images for GUI. Of course I’ve also came across games which had a black borders added to the right and bottom, this were games which didn’t officially support modding, so the devs probably decided to have it like that and not let the game engine add the borders itself each time.

You are right that some GPUs don’t support non power-of-two images, but most games let the artist not worry about that and the game engine does the job of scaling or adding blank borders.
If you think about it, it makes sense. The artist doesn’t waste time adding borders to each of his images and doesn’t waste time creating a plane and generating the right UV coords.

Note that I’m talking about GUI images, everyone makes their textures in power-of-two res.

Panda also supports this, but only scaling the images, not adding borders. I think it would be better if it could also do it the other way, as even when you scale the images up to the next power-of-two, it might still appear just a little bit blurry than the original on some GPUs.

BTW, if you fear that telling Panda to scale each GUI image like this might be slow, then don’t worry. We have a PSD image with 50 layers which takes 0.4 seconds to load with our Python/C++ loader and render on a new notebook.