Oh, it seems you are right
I put loading resources in another thread and textures weren't displaying so I thought the problem was with textures loading, however I just noticed that it was because of FBO creation. They can't be created in another thread. FBOs creation is no big deal for me and can be done before resources loading thread, I guess they just need to be created with setActive(true) in current thread.
sf::Texture tex;
sf::RenderTexture fbo;
void func()
{
tex.loadFromFile("test.png");
fbo.create(100, 100);
}
int main(int argc, char **argv)
{
sf::RenderWindow window(sf::VideoMode(1024, 768), "test", sf::Style::Default);
sf::Thread thread(func);
thread.launch();
thread.wait();
fbo.clear(sf::Color::White);
fbo.draw(sf::Sprite(tex));
fbo.display();
window.draw(sf::Sprite(fbo.getTexture()));
window.display();
sf::sleep(sf::milliseconds(3000));
return 0;
}