Show More
Commit Description:
Tweak calculations....
Commit Description:
Tweak calculations.
Prevent a negative number of visitors and separate visitors from donors.
References:
File last commit:
Show/Diff file:
Action:
FNA/src/Graphics/Vertices/DynamicVertexBuffer.cs
124 lines | 2.5 KiB | text/x-csharp | CSharpLexer
124 lines | 2.5 KiB | text/x-csharp | CSharpLexer
r0 | #region License | |||
/* FNA - XNA4 Reimplementation for Desktop Platforms | ||||
r690 | * Copyright 2009-2022 Ethan Lee and the MonoGame Team | |||
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 DynamicVertexBuffer : VertexBuffer | ||||
{ | ||||
#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 DynamicVertexBuffer( | ||||
GraphicsDevice graphicsDevice, | ||||
VertexDeclaration vertexDeclaration, | ||||
int vertexCount, | ||||
BufferUsage bufferUsage | ||||
) : base( | ||||
graphicsDevice, | ||||
vertexDeclaration, | ||||
vertexCount, | ||||
bufferUsage, | ||||
true | ||||
) { | ||||
} | ||||
public DynamicVertexBuffer( | ||||
GraphicsDevice graphicsDevice, | ||||
Type type, | ||||
int vertexCount, | ||||
BufferUsage bufferUsage | ||||
) : base( | ||||
graphicsDevice, | ||||
VertexDeclaration.FromType(type), | ||||
vertexCount, | ||||
bufferUsage, | ||||
true | ||||
) { | ||||
} | ||||
#endregion | ||||
#region Public SetData Methods | ||||
public void SetData<T>( | ||||
int offsetInBytes, | ||||
T[] data, | ||||
int startIndex, | ||||
int elementCount, | ||||
int vertexStride, | ||||
SetDataOptions options | ||||
) where T : struct { | ||||
ErrorCheck(data, startIndex, elementCount, vertexStride); | ||||
r690 | int elementSizeInBytes = Marshal.SizeOf(typeof(T)); | |||
r0 | GCHandle handle = GCHandle.Alloc(data, GCHandleType.Pinned); | |||
r690 | FNA3D.FNA3D_SetVertexBufferData( | |||
GraphicsDevice.GLDevice, | ||||
r0 | buffer, | |||
offsetInBytes, | ||||
r690 | handle.AddrOfPinnedObject() + (startIndex * elementSizeInBytes), | |||
elementCount, | ||||
elementSizeInBytes, | ||||
vertexStride, | ||||
r0 | options | |||
); | ||||
handle.Free(); | ||||
} | ||||
public void SetData<T>( | ||||
T[] data, | ||||
int startIndex, | ||||
int elementCount, | ||||
SetDataOptions options | ||||
) where T : struct { | ||||
r690 | int elementSizeInBytes = Marshal.SizeOf(typeof(T)); | |||
ErrorCheck(data, startIndex, elementCount, elementSizeInBytes); | ||||
r0 | ||||
GCHandle handle = GCHandle.Alloc(data, GCHandleType.Pinned); | ||||
r690 | FNA3D.FNA3D_SetVertexBufferData( | |||
GraphicsDevice.GLDevice, | ||||
r0 | buffer, | |||
0, | ||||
r690 | handle.AddrOfPinnedObject() + (startIndex * elementSizeInBytes), | |||
elementCount, | ||||
elementSizeInBytes, | ||||
elementSizeInBytes, | ||||
r0 | options | |||
); | ||||
handle.Free(); | ||||
} | ||||
#endregion | ||||
} | ||||
} | ||||