(ded4a3e0a) v0.9.0.7
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user