Add some wrapper types around the global C3D_AttrInfo and C3D_BufferInfo
Allow adding arbitrary slice data to the BufferInfo, returning a lifetime-bound handle to the original slice
Require the VBO handle when drawing arrays (encodes the index, length, and lifetime of the vertex data).
Remaining stuff to do before merging:
[x] Finalize names for all the new APIs and add documentation
[x] See if there's a better pattern than static ATTR_INFO: LazyLock<RwLock<AttrInfo>> (same for BufInfo). This works, but it would be nice if we also had some way to reset it via C3D_SetBufInfo so you could swap the info in and out if you needed more than 12 buffers or 16 attribs.
Closes #14
There are a couple pieces here:
C3D_AttrInfo
andC3D_BufferInfo
Remaining stuff to do before merging:
static ATTR_INFO: LazyLock<RwLock<AttrInfo>>
(same forBufInfo
). This works, but it would be nice if we also had some way to reset it viaC3D_SetBufInfo
so you could swap the info in and out if you needed more than 12 buffers or 16 attribs.