Files
LuaCsForBarotraumaEP/Libraries/MonoGame.Framework/Src/MonoGame.Framework/Graphics/SamplerStateCollection.OpenGL.cs
2019-06-25 16:00:44 +03:00

53 lines
1.9 KiB
C#

// 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.
//
// Author: Kenneth James Pouncey
using MonoGame.OpenGL;
namespace Microsoft.Xna.Framework.Graphics
{
public sealed partial class SamplerStateCollection
{
private void PlatformSetSamplerState(int index)
{
}
private void PlatformClear()
{
}
private void PlatformDirty()
{
}
internal void PlatformSetSamplers(GraphicsDevice device)
{
for (var i = 0; i < _actualSamplers.Length; i++)
{
var sampler = _actualSamplers[i];
var texture = device.Textures[i];
if (sampler != null && texture != null && sampler != texture.glLastSamplerState)
{
// TODO: Avoid doing this redundantly (see TextureCollection.SetTextures())
// However, I suspect that rendering from the same texture with different sampling modes
// is a relatively rare occurrence...
GL.ActiveTexture(TextureUnit.Texture0 + i);
GraphicsExtensions.CheckGLError();
// NOTE: We don't have to bind the texture here because it is already bound in
// TextureCollection.SetTextures(). This, of course, assumes that SetTextures() is called
// before this method is called. If that ever changes this code will misbehave.
// GL.BindTexture(texture.glTarget, texture.glTexture);
// GraphicsExtensions.CheckGLError();
sampler.Activate(device, texture.glTarget, texture.LevelCount > 1);
texture.glLastSamplerState = sampler;
}
}
}
}
}