Thanks for the replies guys. I'll try to address what people have said here.
So my reasoning was that should I make say 100,000 or more draw calls to create individual sprites for each block then I would get huge performance hits wouldn't I? Rendering the blocks to a texture reduces the number of draw calls required by quite a bit...
The thing is, a GPU is much quicker at drawing pixels than the CPU is, but you're using the CPU to do it thousands of times rather than the GPU. If you use a texture atlas, you can build a single vertex buffer from all the visible cells and draw the whole thing in a single draw call. And it would be much faster than calling image::Copy 100,000 times on the CPU.
As for the pathfinding. In the final version of the terrain I intend on having half blocks which create the face of hilled areas so as to be more smooth, while mountains I thought should remain more difficult to traverse.
I don't particularly understand 3D noise all that well as I've only worked with 2D and 1D noise patterns before. But I suppose I could try it. Any tips in that regard?
I posted some links.
Are you saying that I should be doing this in 3D rather than 2D? I'm not particularly interested in that approach if I can help it.
It doesn't need to have a movable camera or a perspective projection, but doing it 3D (ie, using the hardware as it was designed) is definitely preferable than performing 100,000 image copy calls on the CPU. The GPU hardware is very well suited to moving lots of pixels around, so why not let it do its job?