The use of sf::RenderTexture is for when you have a complex image to display that doesn't need to be updated every frame. In the case of the line-of-sight lighting system, it really only needs to change when you move your mouse, otherwise, it would calculate to be the same image. The offscreen drawing would be used to render the scene, but only when there is a mouse moved event. To draw it on screen, you would package it up into a sprite using the offscreen drawing as the texture, so you can update the image onscreen every frame. Even though it would sometimes be the same image, it's a lot less taxing to draw a single prerendered sprite than it is to rerender the scene every frame, as opposed to every mouse move. I hope this answers your question!