public override void Begin() { if (_currentCommands != null) { _currentCommands.Dispose(); } _currentCommands = GetFreeCommandList(); _currentCommands.Begin(); }
public void OnSubmitted(OpenGLCommandEntryList entryList) { _currentCommands = null; lock (_lock) { Debug.Assert(!_submittedLists.Contains(entryList)); _submittedLists.Add(entryList); Debug.Assert(!_availableLists.Contains(entryList)); } }
public void OnCompleted(OpenGLCommandEntryList entryList) { lock (_lock) { Debug.Assert(!_availableLists.Contains(entryList)); _availableLists.Add(entryList); Debug.Assert(_submittedLists.Contains(entryList)); _submittedLists.Remove(entryList); } }
private OpenGLCommandEntryList GetFreeCommandList() { lock (_lock) { if (_availableLists.Count > 0) { OpenGLCommandEntryList ret = _availableLists[_availableLists.Count - 1]; _availableLists.RemoveAt(_availableLists.Count - 1); return(ret); } else { return(new OpenGLNoAllocCommandEntryList(this)); } } }