Пример #1
0
        public IndexBuffer GetIndexBuffer(MeshData mesh, out int indexCount)
        {
            IndexBufferAndCount bufferAndCount = GetIndexBufferAndCount(mesh);

            indexCount = bufferAndCount.IndexCount;
            return(bufferAndCount.Buffer);
        }
Пример #2
0
        public IndexBufferAndCount GetIndexBufferAndCount(MeshData mesh)
        {
            int indexCount;
            IndexBufferAndCount bufferAndCount;
            BufferKey           key = new BufferKey(mesh);

            if (!_ibs.TryGetValue(key, out bufferAndCount))
            {
                var indexBuffer = mesh.CreateIndexBuffer(_factory, out indexCount);
                bufferAndCount = new IndexBufferAndCount(indexBuffer, indexCount);
                if (!_ibs.TryAdd(key, bufferAndCount))
                {
                    indexBuffer.Dispose();
                    return(_ibs[key]);
                }
            }
            else
            {
                indexCount = bufferAndCount.IndexCount;
            }

            return(bufferAndCount);
        }