Commit Description:
Various UI improvements.
Commit Description:
Various UI improvements.
File last commit:
Show/Diff file:
Action:
FNA/src/Content/ContentReaders/Texture3DReader.cs
78 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 System;
using Microsoft.Xna.Framework.Graphics;
#endregion
namespace Microsoft.Xna.Framework.Content
{
internal class Texture3DReader : ContentTypeReader<Texture3D>
{
#region Protected Read Method
protected internal override Texture3D Read(
ContentReader reader,
Texture3D existingInstance
) {
Texture3D texture;
SurfaceFormat format = (SurfaceFormat) reader.ReadInt32();
int width = reader.ReadInt32();
int height = reader.ReadInt32();
int depth = reader.ReadInt32();
int levelCount = reader.ReadInt32();
if (existingInstance == null)
{
texture = new Texture3D(
reader.ContentManager.GetGraphicsDevice(),
width,
height,
depth,
levelCount > 1,
format
);
}
else
{
texture = existingInstance;
}
for (int i = 0; i < levelCount; i += 1)
{
int dataSize = reader.ReadInt32();
byte[] data = reader.ReadBytes(dataSize);
texture.SetData(
i,
0,
0,
width,
height,
0,
depth,
data,
0,
dataSize
);
// Calculate dimensions of next mip level.
width = Math.Max(width >> 1, 1);
height = Math.Max(height >> 1, 1);
depth = Math.Max(depth >> 1, 1);
}
return texture;
}
#endregion
}
}