To understand how renderer works I have prepared this diagram. Obviously there are lot more things that are working in the background, but this should be enough to understand the gist of it.
As you can see, I have tried to make it as modular and as customisable as possible.
The Window3D serves as a interface to real time rendering. It's job is similiar to GL context in OpenGL.
Obviously, not as powerful, without it you can't have render loop.
You can however render (though not realtime) without the Window3D. All you need is ShaderProgram and Framebuffer.
I will get to buffers later, but basicaly framebuffers are storage areas for rendered frames.
The real shit is happening in ShaderProgram.
ShaderProgram handle most work that the renderer does.
One of the best functionalities of the CPU Renderer, is that it behaves similiar to GPU on mudular user extendable programing with user defined shaders. So far there are only Vertex and Fragment Shaders Supported.
For more info on how you can setup your own shaders click here. All this time I have been using terms like Buffers, Vertices, Textures without explaining it. Allow me to do so on this page.