/// <summary> /// Установка текстуры /// </summary> internal void Bind() { bool bindable = false; if (State != LoadingState.Empty) { if (tex.GLTex != 0) { bindable = true; } } // Если есть что установить в конвейер if (bindable) { // Установка в конвейер tex.Bind(); // Фильтрация GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Linear); switch (Filtering) { case FilterMode.Disabled: GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)TextureMinFilter.Nearest); break; case FilterMode.Enabled: GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)TextureMinFilter.Linear); break; } // Повторение по горизонтали switch (WrapHorizontal) { case WrapMode.Clamp: GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapS, (int)TextureWrapMode.Clamp); break; case WrapMode.Repeat: GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapS, (int)TextureWrapMode.Repeat); break; case WrapMode.Mirror: GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapS, (int)TextureWrapMode.MirroredRepeat); break; } // Повторение по вертикали switch (WrapVertical) { case WrapMode.Clamp: GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapT, (int)TextureWrapMode.Clamp); break; case WrapMode.Repeat: GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapT, (int)TextureWrapMode.Repeat); break; case WrapMode.Mirror: GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapT, (int)TextureWrapMode.MirroredRepeat); break; } } else { if (Proxy != null) { Proxy.Bind(); } else { BindEmpty(); } } }