using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace StgSharp.Graphics { /// /// Interface of all kinds OpenGL buffer onjects /// public abstract class BufferObjectBase : IDisposable { protected glHandleSet _bufferHandle; protected IglFunc GL; /// /// Get the only handle to one of the Object instance /// /// /// public glHandle this[int index] { get { return _bufferHandle[index]; } } /// /// Bind a buffer instance to OpenGL /// /// Index of handle of the object in this instance to be bind public abstract void Bind(int index); /// public override string ToString() { return $"This is a {GetType().FullName}, containing {_bufferHandle.length} buffer handles: {_bufferHandle.ToString()}."; } protected abstract void Dispose(bool disposing); ~BufferObjectBase() { Dispose(disposing: false); } public void Dispose() { Dispose(disposing: true); GC.SuppressFinalize(this); } } }