Not to oversimplify, but why don’t we call buffers and textures arrays?
Because they’re not.
Textures are formatted memory. They are not expected or required to be stored linearly as an array. They are formatted specifically along certain requirements for the purposes of fast access within a shader.
Buffers are linear arrays of memory. They are expected and required to be stored contiguously as is. There is no intrinsic format on this memory save whatever you choose to use.
Render to Texture specifically means rendering to a formatted section of memory. It implies that your intent is to use this section of memory via texture access later on.
Render to Buffer specifically means rendering to an unformatted section of memory. It implies that your intent is not to use this section via texture access, outside of buffer textures.
Basically, it’s really simple. If your intent is to use the data as a texture in some process, use RTT. If your intent is to use the data via vertex attributes and such, use RTBO. In 3.x hardware, means using transform feedback; this is faster than rendering to a buffer texture or some such.
On shader4 cards, no data is copied during the PBO operation, the texture is just type-casted to that VBO (in a black-box way).
That seems unlikely. Unless you’re using a buffer texture, the system will need to reformat a buffer object into a texture object. This typically involves swizzling components around for better cache coherency.
If the conversion between texture and buffer object were so simple, buffer textures wouldn’t be limited to 1 dimension.