I'm very new to SFML so I don't have a lot of room to speak, I'd just like to know if there is any interest in directly rendering to a window without storing data in an object first.
This kind of rendering was good 15 years ago, when rendering commands were directly translated to pixels that were then directly written to the target surface/window.
Now with OpenGL and hardware-accelerated rendering, things are more object-oriented. You must first prepare the data to render, then upload it to the GPU and finally issue a command to make your graphics card process and render the data. This is how you can render millions of polygons per second.
Of course there's no problem to draw dynamic data, and even to hide it behind an "immediate rendering" API (like OpenGL did at the very beginning), but I think it's better to make users directly think object-oriented, so that their program structure more or less matches the rendering process of the graphics card and they can get maximum performances.
Now, let's focus on your particular context, drawing dynamic lines. In SFML 1 there's indeed no efficient way to do this and I'd say use OpenGL. In SFML 2, the (hopefully) upcoming new rendering API will be more low-level, flexible and closer to the way OpenGL & GPUs work. Drawing dynamic lines will then be as easy as this piece of code:
// init
sf::Geometry lines;
lines.SetPrimitiveType(sf::Lines);
// update
lines.Resize(count * 2);
for (int i = 0; i < count; ++i)
{
lines[i * 2 + 0] = sf::Point(/* position, color */);
lines[i * 2 + 1] = sf::Point(/* position, color */);
}
// draw
window.Draw(lines /* + a few other parameters */);
Speaking of drawing directly to a window, is there a possibility of using fast raster warping and distortion effects without dabbling into OpenGL?
The most efficient way to do this kind of effects is with shaders. Other potential solutions depend on the details of the effect to achieve.