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.R8G8B8); 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); } }
//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)); }
/// <summary> /// Creates a GL texture manually. /// </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 Texture CreateManual(string name, TextureType type, int width, int height, int numMipMaps, Axiom.Media.PixelFormat format, TextureUsage usage) { GLTexture texture = new GLTexture(name, type, width, height, numMipMaps, format, usage); texture.Enable32Bit(is32Bit); return(texture); }
public static D3D.Format ConvertEnum(Axiom.Media.PixelFormat format) { switch (format) { case Axiom.Media.PixelFormat.A8: return(D3D.Format.A8); case Axiom.Media.PixelFormat.L8: return(D3D.Format.L8); case Axiom.Media.PixelFormat.L16: return(D3D.Format.L16); case Axiom.Media.PixelFormat.A4L4: return(D3D.Format.A4L4); case Axiom.Media.PixelFormat.BYTE_LA: return(D3D.Format.A8L8); // Assume little endian here case Axiom.Media.PixelFormat.R3G3B2: return(D3D.Format.R3G3B2); case Axiom.Media.PixelFormat.A1R5G5B5: return(D3D.Format.A1R5G5B5); case Axiom.Media.PixelFormat.A4R4G4B4: return(D3D.Format.A4R4G4B4); case Axiom.Media.PixelFormat.R5G6B5: return(D3D.Format.R5G6B5); case Axiom.Media.PixelFormat.R8G8B8: return(D3D.Format.R8G8B8); case Axiom.Media.PixelFormat.X8R8G8B8: return(D3D.Format.X8R8G8B8); case Axiom.Media.PixelFormat.A8R8G8B8: return(D3D.Format.A8R8G8B8); case Axiom.Media.PixelFormat.X8B8G8R8: return(D3D.Format.X8B8G8R8); case Axiom.Media.PixelFormat.A8B8G8R8: return(D3D.Format.A8B8G8R8); case Axiom.Media.PixelFormat.A2R10G10B10: return(D3D.Format.A2R10G10B10); case Axiom.Media.PixelFormat.A2B10G10R10: return(D3D.Format.A2B10G10R10); case Axiom.Media.PixelFormat.FLOAT16_R: return(D3D.Format.R16F); case Axiom.Media.PixelFormat.FLOAT16_RGBA: return(D3D.Format.A16B16G16R16F); case Axiom.Media.PixelFormat.FLOAT32_R: return(D3D.Format.R32F); case Axiom.Media.PixelFormat.FLOAT32_RGBA: return(D3D.Format.A32B32G32R32F); case Axiom.Media.PixelFormat.SHORT_RGBA: return(D3D.Format.A16B16G16R16); case Axiom.Media.PixelFormat.DXT1: return(D3D.Format.Dxt1); case Axiom.Media.PixelFormat.DXT2: return(D3D.Format.Dxt2); case Axiom.Media.PixelFormat.DXT3: return(D3D.Format.Dxt3); case Axiom.Media.PixelFormat.DXT4: return(D3D.Format.Dxt4); case Axiom.Media.PixelFormat.DXT5: return(D3D.Format.Dxt5); default: return(D3D.Format.Unknown); } }