public override void Update(int[] indices, int updateCount) { if (_32BitIndices) { indexBuffer.SetData <int>(indices, 0, updateCount); } else { var indicesTEMP = new short[updateCount]; for (int i = 0; i != updateCount; ++i) { indicesTEMP[i] = (short)indices[i]; } indexBuffer.SetData <short>(indicesTEMP, 0, updateCount); } }
/// <summary> /// Creates a new instance of <see cref="XNAIndexBufferImplementation"/>. /// </summary> /// <param name="renderer">The XNA renderer.</param> /// <param name="indices">The index data</param> /// <param name="usage">The buffer usage specifying what type of memory the buffer should be created in.</param> internal XNAIndexBufferImplementation(XNARenderer renderer, DataBuffer <int> indices, ResourceUsage usage) : base(indices, usage) { _renderer = renderer; _graphicsDevice = renderer.GraphicsDevice; if (usage == ResourceUsage.Static) { _indexBuffer = new XFG.IndexBuffer(_graphicsDevice, XNAIndexFormat, indices.Length, XFG.BufferUsage.None); } else { _indexBuffer = new XFG.DynamicIndexBuffer(_graphicsDevice, XNAIndexFormat, indices.Length, XFG.BufferUsage.None); } _indexBuffer.SetData <int>(indices.Buffer); }