示例#1
0
            private void UpdateVertexBuffer(GraphicsDevice device)
            {
                if (_disposed || _updateQueued)
                {
                    return;
                }

                var indices = Indices;
                PooledIndexBuffer currentBuffer = Buffer;

                if (indices.Length > 0 && (Buffer == null || currentBuffer.IndexCount != indices.Length))
                {
                    _updateQueued = true;

                    Alex.Instance.UIThreadQueue.Enqueue(
                        () =>
                    {
                        if (_disposed)
                        {
                            return;
                        }

                        PooledIndexBuffer buffer = GpuResourceManager.GetIndexBuffer(
                            this, device, IndexElementSize.SixteenBits, indices.Length, BufferUsage.None);

                        buffer.SetData(indices);
                        Buffer = buffer;

                        currentBuffer?.MarkForDisposal();

                        _updateQueued = false;
                    });
                }
            }
示例#2
0
            private void UpdateVertexBuffer(GraphicsDevice device)
            {
                var indices = Indices;

                PooledIndexBuffer currentBuffer = Buffer;

                if (indices.Length > 0 && (Buffer == null || currentBuffer.IndexCount != indices.Length))
                {
                    PooledIndexBuffer buffer = GpuResourceManager.GetIndexBuffer(this, device, IndexElementSize.SixteenBits,
                                                                                 indices.Length, BufferUsage.None);

                    buffer.SetData(indices);
                    Buffer = buffer;

                    currentBuffer?.MarkForDisposal();
                }
            }