Show More
Commit Description:
Add missing component and message.
Commit Description:
Add missing component and message.
File last commit:
Show/Diff file:
Action:
FNA/src/Graphics/Vertices/DynamicIndexBuffer.cs
117 lines | 2.2 KiB | text/x-csharp | CSharpLexer
Early working version (including all dependencies, lol).
r0 #region License
/* FNA - XNA4 Reimplementation for Desktop Platforms
Upgrade FNA to 22.12...
r690 * Copyright 2009-2022 Ethan Lee and the MonoGame Team
Early working version (including all dependencies, lol).
r0 *
* Released under the Microsoft Public License.
* See LICENSE for details.
*/
#endregion
#region Using Statements
using System;
using System.Runtime.InteropServices;
#endregion
namespace Microsoft.Xna.Framework.Graphics
{
public class DynamicIndexBuffer : IndexBuffer
{
#region Public Properties
public bool IsContentLost
{
get
{
return false;
}
}
#endregion
#region ContentLost Event
#pragma warning disable 0067
// We never lose data, but lol XNA4 compliance -flibit
public event EventHandler<EventArgs> ContentLost;
#pragma warning restore 0067
#endregion
#region Public Constructors
public DynamicIndexBuffer(
GraphicsDevice graphicsDevice,
IndexElementSize indexElementSize,
int indexCount,
BufferUsage usage
) : base(
graphicsDevice,
indexElementSize,
indexCount,
usage,
true
) {
}
public DynamicIndexBuffer(
GraphicsDevice graphicsDevice,
Type indexType,
int indexCount,
BufferUsage usage
) : base(
graphicsDevice,
indexType,
indexCount,
usage,
true
) {
}
#endregion
#region Public SetData Methods
public void SetData<T>(
int offsetInBytes,
T[] data,
int startIndex,
int elementCount,
SetDataOptions options
) where T : struct {
ErrorCheck(data, startIndex, elementCount);
GCHandle handle = GCHandle.Alloc(data, GCHandleType.Pinned);
Upgrade FNA to 22.12...
r690 FNA3D.FNA3D_SetIndexBufferData(
GraphicsDevice.GLDevice,
Early working version (including all dependencies, lol).
r0 buffer,
offsetInBytes,
handle.AddrOfPinnedObject() + (startIndex * Marshal.SizeOf(typeof(T))),
elementCount * Marshal.SizeOf(typeof(T)),
options
);
handle.Free();
}
public void SetData<T>(
T[] data,
int startIndex,
int elementCount,
SetDataOptions options
) where T : struct {
ErrorCheck(data, startIndex, elementCount);
GCHandle handle = GCHandle.Alloc(data, GCHandleType.Pinned);
Upgrade FNA to 22.12...
r690 FNA3D.FNA3D_SetIndexBufferData(
GraphicsDevice.GLDevice,
Early working version (including all dependencies, lol).
r0 buffer,
0,
handle.AddrOfPinnedObject() + (startIndex * Marshal.SizeOf(typeof(T))),
elementCount * Marshal.SizeOf(typeof(T)),
options
);
handle.Free();
}
#endregion
}
}