public static void ReturnPNTX2VertexBuffer(VertexBuffer11 buff) { if (buff == null) { return; } buff.Dispose(); GC.SuppressFinalize(buff); // BufferMutex.WaitOne(); //todo11 reimplement buffer pooling //int count = buff.Count; //if (!VertexX2Pools.ContainsKey(count)) //{ // VertexX2Pools.Add(count, new Buffers(count)); //} //VertexX2Pools[count].Entries.Push(buff); //BufferMutex.ReleaseMutex(); }
public static void DisposeBuffers() { foreach (Buffers pool in IndexPools.Values) { foreach (object buf in pool.Entries) { IndexBuffer11 indexBuf = buf as IndexBuffer11; indexBuf.Dispose(); GC.SuppressFinalize(indexBuf); } } IndexPools.Clear(); foreach (Buffers pool in VertexX2Pools.Values) { foreach (object buf in pool.Entries) { VertexBuffer11 vertexBuf = buf as VertexBuffer11; vertexBuf.Dispose(); GC.SuppressFinalize(vertexBuf); } } Vector3dPools.Clear(); // no need to dispose since these are just managed buffers LockX2Pools.Clear(); Vector3dPools.Clear(); IndexU32Pools.Clear(); IndexU32Pools.Clear(); TriangleListPool.Entries.Clear(); foreach (Texture11 texture in TexturePool256) { texture.Dispose(); GC.SuppressFinalize(texture); } TexturePool256.Clear(); }