private void EnsureSamplerMipmapState(uint textureUnit, bool mipmapped) { if (_textureUnitSamplers[textureUnit].Sampler != null && _textureUnitSamplers[textureUnit].Mipmapped != mipmapped) { OpenGLSampler sampler = _textureUnitSamplers[textureUnit].Sampler; uint samplerID = mipmapped ? sampler.MipmapSampler : sampler.NoMipmapSampler; glBindSampler(textureUnit, samplerID); CheckLastError(); _textureUnitSamplers[textureUnit].Mipmapped = mipmapped; } }
public void SetSampler(uint textureUnit, OpenGLSampler sampler) { if (_textureUnitSamplers[textureUnit].Sampler != sampler) { bool mipmapped = false; OpenGLTextureView texBinding = _textureUnitTextures[textureUnit]; if (texBinding != null) { mipmapped = texBinding.Target.MipLevels > 1; } uint samplerID = mipmapped ? sampler.MipmapSampler : sampler.NoMipmapSampler; glBindSampler(textureUnit, samplerID); CheckLastError(); _textureUnitSamplers[textureUnit] = new BoundSamplerStateInfo(sampler, mipmapped); } else if (_textureUnitTextures[textureUnit] != null) { EnsureSamplerMipmapState(textureUnit, _textureUnitTextures[textureUnit].Target.MipLevels > 1); } }
public BoundSamplerStateInfo(OpenGLSampler sampler, bool mipmapped) { Sampler = sampler; Mipmapped = mipmapped; }