Show More
Commit Description:
Various UI improvements.
Commit Description:
Various UI improvements.
File last commit:
Show/Diff file:
Action:
FNA/src/Content/ContentReaders/VertexDeclarationReader.cs
54 lines | 1.5 KiB | text/x-csharp | CSharpLexer
#region License
/* FNA - XNA4 Reimplementation for Desktop Platforms
* Copyright 2009-2020 Ethan Lee and the MonoGame Team
*
* Released under the Microsoft Public License.
* See LICENSE for details.
*/
#endregion
#region Using Statements
using Microsoft.Xna.Framework.Graphics;
#endregion
namespace Microsoft.Xna.Framework.Content
{
internal class VertexDeclarationReader : ContentTypeReader<VertexDeclaration>
{
#region Protected Read Method
protected internal override VertexDeclaration Read(
ContentReader reader,
VertexDeclaration existingInstance
) {
int vertexStride = reader.ReadInt32();
int elementCount = reader.ReadInt32();
VertexElement[] elements = new VertexElement[elementCount];
for (int i = 0; i < elementCount; i += 1)
{
int offset = reader.ReadInt32();
VertexElementFormat elementFormat = (VertexElementFormat) reader.ReadInt32();
VertexElementUsage elementUsage = (VertexElementUsage) reader.ReadInt32();
int usageIndex = reader.ReadInt32();
elements[i] = new VertexElement(
offset,
elementFormat,
elementUsage,
usageIndex
);
}
/* TODO: This process generates alot of duplicate VertexDeclarations
* which in turn complicates other systems trying to share GPU resources
* like DX11 vertex input layouts.
*
* We should consider caching vertex declarations here and returning
* previously created declarations when they are in our cache.
*/
return new VertexDeclaration(vertexStride, elements);
}
#endregion
}
}