Example #1
0
        /// <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();
                }
            }
        }