//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));
}