Axiom.RenderSystems.DirectX9.D3DHelper.GetClosestSupported C# (CSharp) Метод

GetClosestSupported() публичный статический Метод

public static GetClosestSupported ( Axiom format ) : Axiom.Media.PixelFormat
format Axiom
Результат Axiom.Media.PixelFormat
		public static Axiom.Media.PixelFormat GetClosestSupported( Axiom.Media.PixelFormat format )
		{
			if ( ConvertEnum( format ) != D3D.Format.Unknown )
				return format;
			switch ( format )
			{
				case Axiom.Media.PixelFormat.B5G6R5:
					return Axiom.Media.PixelFormat.R5G6B5;
				case Axiom.Media.PixelFormat.B8G8R8:
					return Axiom.Media.PixelFormat.A8R8G8B8; // Would be R8G8B8 normaly but MDX doesn't like that format.
				case Axiom.Media.PixelFormat.B8G8R8A8:
					return Axiom.Media.PixelFormat.A8R8G8B8;
				case Axiom.Media.PixelFormat.FLOAT16_RGB:
					return Axiom.Media.PixelFormat.FLOAT16_RGBA;
				case Axiom.Media.PixelFormat.FLOAT32_RGB:
					return Axiom.Media.PixelFormat.FLOAT32_RGBA;
				case Axiom.Media.PixelFormat.Unknown:
				default:
					return Axiom.Media.PixelFormat.A8R8G8B8;
			}
		}

Usage Example

        //public override Axiom.Core.Texture Create(string name, TextureType type) {
        //    D3DTexture texture = new D3DTexture(name, device, TextureUsage.Default, type);

        //    // Handle 32-bit texture settings
        //    texture.Enable32Bit(is32Bit);

        //    return texture;
        //}

        /// <summary>
        ///    Used to create a blank D3D texture.
        /// </summary>
        /// <param name="name"></param>
        /// <param name="type"></param>
        /// <param name="width"></param>
        /// <param name="height"></param>
        /// <param name="numMipMaps"></param>
        /// <param name="format"></param>
        /// <param name="usage"></param>
        /// <returns></returns>
        //public override Axiom.Core.Texture CreateManual(string name, TextureType type, int width, int height, int numMipMaps, Axiom.Media.PixelFormat format, TextureUsage usage) {
        //    D3DTexture texture = new D3DTexture(name, device, type, width, height, numMipMaps, format, usage);
        //    texture.Enable32Bit(is32Bit);
        //    return texture;
        //}

        // This ends up just discarding the format passed in; the C# methods don't let you supply
        // a "recommended" format.  Ah well.
        public override Axiom.Media.PixelFormat GetNativeFormat(TextureType ttype, Axiom.Media.PixelFormat format, TextureUsage usage)
        {
            // Basic filtering
            D3D.Format d3dPF = D3DHelper.ConvertEnum(D3DHelper.GetClosestSupported(format));

            // Calculate usage
            D3D.Usage d3dusage = 0;
            D3D.Pool  pool     = D3D.Pool.Managed;
            if ((usage & TextureUsage.RenderTarget) != 0)
            {
                d3dusage |= D3D.Usage.RenderTarget;
                pool      = D3D.Pool.Default;
            }
            if ((usage & TextureUsage.Dynamic) != 0)
            {
                d3dusage |= D3D.Usage.Dynamic;
                pool      = D3D.Pool.Default;
            }

            // Use D3DX to adjust pixel format
            switch (ttype)
            {
            case TextureType.OneD:
            case TextureType.TwoD:
                TextureRequirements tReqs;
                TextureLoader.CheckTextureRequirements(device, d3dusage, pool, out tReqs);
                d3dPF = tReqs.Format;
                break;

            case TextureType.ThreeD:
                VolumeTextureRequirements volReqs;
                TextureLoader.CheckVolumeTextureRequirements(device, pool, out volReqs);
                d3dPF = volReqs.Format;
                break;

            case TextureType.CubeMap:
                CubeTextureRequirements cubeReqs;
                TextureLoader.CheckCubeTextureRequirements(device, d3dusage, pool, out cubeReqs);
                d3dPF = cubeReqs.Format;
                break;
            }
            ;
            return(D3DHelper.ConvertEnum(d3dPF));
        }