using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Runtime.InteropServices; namespace CodeImp.DoomBuilder.Rendering { public class VertexBuffer : IDisposable { public VertexBuffer(int sizeInBytes) { Handle = VertexBuffer_New(sizeInBytes); if (Handle == IntPtr.Zero) throw new Exception("VertexBuffer_New failed"); } ~VertexBuffer() { Dispose(); } public bool Disposed { get { return Handle == IntPtr.Zero; } } public void Dispose() { if (!Disposed) { VertexBuffer_Delete(Handle); Handle = IntPtr.Zero; } } internal IntPtr Handle; [DllImport("BuilderNative.dll", CallingConvention = CallingConvention.Cdecl)] static extern IntPtr VertexBuffer_New(int sizeInBytes); [DllImport("BuilderNative.dll", CallingConvention = CallingConvention.Cdecl)] static extern void VertexBuffer_Delete(IntPtr handle); } }