If there isn't already maybe a small message in the render texture documentation should mention that a limited amount can be created depending on system resources.
SFML can be run on OpenGL 1.2 hardware. This dates back to the 1990s when video RAM capacity didn't surpass 16MB or maybe 32MB on high end cards. Do you think we should add a note to sf::Texture that mentions that a limited amount can be created depending on system resources as well? I think every established developer should have a feeling or intuition for what kind of resources they are creating and their underlying requirements. If you have an idea of how SFML implements its classes, you can also roughly estimate when you will hit the limit. I admit that you probably didn't know how sf::RenderTexture is implemented because it isn't documented, but since you did do a step-through debug and realized the stuff with GetDC() you might have also seen the window creation as well.
Ultimately,
everything you can create is limited by system resources in one way or another. What we would and should do is warn users of abnormally low limits that don't fit intuition and sf::RenderTexture doesn't fall into that category if you ask me. "Typical usage" of sf::RenderTexture doesn't require creating that many of them.
The system is not something i have written on my own it's a team of people that have been working on it for about 3-4 years and this functionality has been in it from the start it's only becoming a problem now due to the complexity of the games we are making. This is a system that cannot be changed at such a fundamental part so we will need to think up a good solution for this.
I don't mean to be offensive, but did you guys ever think about the scalability of the system? Something that might work on a small scale might not work on a larger scale, such as the current implementation using so many sf::RenderTextures.
You hear the argument a lot that "xyz cannot be changed because it has been around for a while" and I have to counter argue that if xyz has been around for a while, surely the requirements of the project that it was originally written for cannot be the same as the projects to which it is applied now. I know refactoring is hard, and in the short term it doesn't yield much if any results, but if done right you can future-proof your framework for the next few years.
Interesting, well if render textures are not the most appropriate thing to use then what should be used instead? I require something that I can draw to, then draw that to a window with a lot of other sprites.
This also has me wondering: If you draw to a sf::RenderTexture
just to draw the generated image to the framebuffer anyway, why even bother with the extra step? Surely there must be something else you are doing that doesn't make drawing directly to the backbuffer as simple as it sounds. If there is nothing else, then I regret to have to tell you that what you are doing is very very inefficient.
If you can provide a more complete picture of what exactly is being drawn and how it is drawn (with shaders, custom blending, etc.) we can provide more suggestions for improvements.