Maximum size of a constant buffer 4096 * float4 (64kb). A buffer object may be up to 128mb of size. One constant buffer can't hold that much of data, although it is enough for typical use.
Practically, accessing the buffer in the vertex shader is same as reading a texture. Texture fetches has been typically a slightly more expensive than constant buffer fetch. So this is the minor performance hit.
That's very interesting kauna, I'll definitivly look into that!
I'm currently not that familjar with using buffers yet, other than for constant buffers and vertex and index buffers.
Why do you use buffers rather than constant buffers in that way? Sorry for my ignorance!
Also isn't the performance penalties, you are talking about, to do with what kind of usage flag is set when creating the buffer?
For example; if you create a buffer with a using flag of D3D10_USAGE_DYNAMIC, a cpu flag of D3D10_CPU_ACCESS_WRITE and you map it with D3D10_MAP_WRITE_DISCARD, is there a difference in performance whether you use that buffer as a constant buffer or as a shader resource?
Or is it an issue of mapping when the bind flag is D3D10_BIND_SHADER_RESOURCE rather than D3D10_BIND_CONSTANT_BUFFER?