Abstract base class for IGpuBuffer implementations.
Depending on the capabilities of the underlying graphics API and the resource type of the GPU buffer, an implementing classes may choose to do one of the following:
Override all of the three above:
For each buffer update, DoBufferMap is called first:
if it returns IntPtr.Zero, then the update will be performed via DoBufferUpdate.
Otherwise, the update will be performed via IGpuBuffer.BufferPrepare and finally DoBufferUnmap.
Creates a new instance of GpuBufferBase.