(ded4a3e0a) v0.9.0.7

This commit is contained in:
Joonas Rikkonen
2019-06-25 16:00:44 +03:00
parent e5ae622c77
commit 4a51db77b5
1777 changed files with 421528 additions and 917 deletions

View File

@@ -0,0 +1,70 @@
// MonoGame - Copyright (C) The MonoGame Team
// This file is subject to the terms and conditions defined in
// file 'LICENSE.txt', which is part of this source code package.
using MonoGame.OpenGL;
namespace Microsoft.Xna.Framework.Graphics
{
public sealed partial class TextureCollection
{
private TextureTarget[] _targets;
void PlatformInit()
{
_targets = new TextureTarget[_textures.Length];
}
void PlatformClear()
{
for (var i = 0; i < _targets.Length; i++)
_targets[i] = 0;
}
void PlatformSetTextures(GraphicsDevice device)
{
// Skip out if nothing has changed.
if (_dirty == 0)
return;
for (var i = 0; i < _textures.Length; i++)
{
var mask = 1 << i;
if ((_dirty & mask) == 0)
continue;
var tex = _textures[i];
GL.ActiveTexture(TextureUnit.Texture0 + i);
GraphicsExtensions.CheckGLError();
// Clear the previous binding if the
// target is different from the new one.
if (_targets[i] != 0 && (tex == null || _targets[i] != tex.glTarget))
{
GL.BindTexture(_targets[i], 0);
_targets[i] = 0;
GraphicsExtensions.CheckGLError();
}
if (tex != null)
{
_targets[i] = tex.glTarget;
GL.BindTexture(tex.glTarget, tex.glTexture);
GraphicsExtensions.CheckGLError();
unchecked
{
_graphicsDevice._graphicsMetrics._textureCount++;
}
}
_dirty &= ~mask;
if (_dirty == 0)
break;
}
_dirty = 0;
}
}
}