void Dispose(bool fin) { if (isDisposed) { return; } if (view != null) { view.Dispose(); view = null; } isDisposed = true; if (!fin) { typelessBuffer.Release(); } // We leave buffer to be garbage collected. if (!fin) { typelessBuffer = null; GC.SuppressFinalize(this); } }
public void BindToDevice(GraphicsDevice device) { lock (syncRoot) { AssertNotDisposed(); typelessBuffer.BindToDevice(device); if (view == null) { view = device.DriverDevice.CreateIBufferView(typelessBuffer.DeviceData, format.IsWide, offset); } } }
public void UnBindFromDevice() { lock (syncRoot) { AssertNotDisposed(); // we only unbind self, not also buffer. if (view != null) { view.Dispose(); view = null; } } }