コード例 #1
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="type"></param>
        /// <param name="options"></param>
        /// <param name="caps"></param>
        /// <param name="texType"></param>
        /// <returns></returns>
        public static D3D.TextureFilter ConvertEnum(FilterType type, FilterOptions options, D3D.Caps devCaps, D3DTexType texType)
        {
            // setting a default val here to keep compiler from complaining about using unassigned value types
            D3D.FilterCaps filterCaps = devCaps.TextureFilterCaps;

            switch(texType) {
                case D3DTexType.Normal:
                    filterCaps = devCaps.TextureFilterCaps;
                    break;
                case D3DTexType.Cube:
                    filterCaps = devCaps.CubeTextureFilterCaps;
                    break;
                case D3DTexType.Volume:
                    filterCaps = devCaps.VolumeTextureFilterCaps;
                    break;
            }

            switch(type) {
                case FilterType.Min: {
                    switch(options) {
                        case FilterOptions.Anisotropic:
                            if(filterCaps.SupportsMinifyAnisotropic) {
                                return D3D.TextureFilter.Anisotropic;
                            }
                            else {
                                return D3D.TextureFilter.Linear;
                            }

                        case FilterOptions.Linear:
                            if(filterCaps.SupportsMinifyLinear) {
                                return D3D.TextureFilter.Linear;
                            }
                            else {
                                return D3D.TextureFilter.Point;
                            }

                        case FilterOptions.Point:
                        case FilterOptions.None:
                            return D3D.TextureFilter.Point;
                    }
                    break;
                }
                case FilterType.Mag: {
                    switch(options) {
                        case FilterOptions.Anisotropic:
                            if(filterCaps.SupportsMagnifyAnisotropic) {
                                return D3D.TextureFilter.Anisotropic;
                            }
                            else {
                                return D3D.TextureFilter.Linear;
                            }

                        case FilterOptions.Linear:
                            if(filterCaps.SupportsMagnifyLinear) {
                                return D3D.TextureFilter.Linear;
                            }
                            else {
                                return D3D.TextureFilter.Point;
                            }

                        case FilterOptions.Point:
                        case FilterOptions.None:
                            return D3D.TextureFilter.Point;
                    }
                    break;
                }
                case FilterType.Mip: {
                    switch(options) {
                        case FilterOptions.Anisotropic:
                        case FilterOptions.Linear:
                            if(filterCaps.SupportsMipMapLinear) {
                                return D3D.TextureFilter.Linear;
                            }
                            else {
                                return D3D.TextureFilter.Point;
                            }

                        case FilterOptions.Point:
                            if(filterCaps.SupportsMipMapPoint) {
                                return D3D.TextureFilter.Point;
                            }
                            else {
                                return D3D.TextureFilter.None;
                            }

                        case FilterOptions.None:
                            return D3D.TextureFilter.None;
                    }
                    break;
                }
            }

            // should never get here
            return 0;
        }
コード例 #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="type"></param>
        /// <param name="options"></param>
        /// <param name="caps"></param>
        /// <param name="texType"></param>
        /// <returns></returns>
        public static D3D.TextureFilter ConvertEnum(FilterType type, FilterOptions options, D3D.Caps devCaps, D3DTexType texType)
        {
            // setting a default val here to keep compiler from complaining about using unassigned value types
            D3D.FilterCaps filterCaps = devCaps.TextureFilterCaps;

            switch (texType)
            {
            case D3DTexType.Normal:
                filterCaps = devCaps.TextureFilterCaps;
                break;

            case D3DTexType.Cube:
                filterCaps = devCaps.CubeTextureFilterCaps;
                break;

            case D3DTexType.Volume:
                filterCaps = devCaps.VolumeTextureFilterCaps;
                break;
            }

            switch (type)
            {
            case FilterType.Min: {
                switch (options)
                {
                case FilterOptions.Anisotropic:
                    if (filterCaps.SupportsMinifyAnisotropic)
                    {
                        return(D3D.TextureFilter.Anisotropic);
                    }
                    else
                    {
                        return(D3D.TextureFilter.Linear);
                    }

                case FilterOptions.Linear:
                    if (filterCaps.SupportsMinifyLinear)
                    {
                        return(D3D.TextureFilter.Linear);
                    }
                    else
                    {
                        return(D3D.TextureFilter.Point);
                    }

                case FilterOptions.Point:
                case FilterOptions.None:
                    return(D3D.TextureFilter.Point);
                }
                break;
            }

            case FilterType.Mag: {
                switch (options)
                {
                case FilterOptions.Anisotropic:
                    if (filterCaps.SupportsMagnifyAnisotropic)
                    {
                        return(D3D.TextureFilter.Anisotropic);
                    }
                    else
                    {
                        return(D3D.TextureFilter.Linear);
                    }

                case FilterOptions.Linear:
                    if (filterCaps.SupportsMagnifyLinear)
                    {
                        return(D3D.TextureFilter.Linear);
                    }
                    else
                    {
                        return(D3D.TextureFilter.Point);
                    }

                case FilterOptions.Point:
                case FilterOptions.None:
                    return(D3D.TextureFilter.Point);
                }
                break;
            }

            case FilterType.Mip: {
                switch (options)
                {
                case FilterOptions.Anisotropic:
                case FilterOptions.Linear:
                    if (filterCaps.SupportsMipMapLinear)
                    {
                        return(D3D.TextureFilter.Linear);
                    }
                    else
                    {
                        return(D3D.TextureFilter.Point);
                    }

                case FilterOptions.Point:
                    if (filterCaps.SupportsMipMapPoint)
                    {
                        return(D3D.TextureFilter.Point);
                    }
                    else
                    {
                        return(D3D.TextureFilter.None);
                    }

                case FilterOptions.None:
                    return(D3D.TextureFilter.None);
                }
                break;
            }
            }

            // should never get here
            return(0);
        }