private D3D.TextureFilter GetBestFilterMethod()
{
// those MUST be initialized !!!
Debug.Assert( this._device != null, "device must be intitialized" );
Debug.Assert( this._texture != null, "texture must be intialized" );
D3D.FilterCaps filterCaps;
// Minification filter is used for mipmap generation
// Pick the best one supported for this tex type
switch ( this.TextureType )
{
case TextureType.OneD: // Same as 2D
case TextureType.TwoD:
filterCaps = this._devCaps.TextureFilterCaps;
break;
case TextureType.ThreeD:
filterCaps = this._devCaps.VertexTextureFilterCaps;
break;
case TextureType.CubeMap:
filterCaps = this._devCaps.CubeTextureFilterCaps;
break;
default:
return D3D.TextureFilter.Point;
}
if ( ( filterCaps & D3D.FilterCaps.MinGaussianQuad ) == D3D.FilterCaps.MinGaussianQuad )
{
return D3D.TextureFilter.GaussianQuad;
}
if ( ( filterCaps & D3D.FilterCaps.MinPyramidalQuad ) == D3D.FilterCaps.MinPyramidalQuad )
{
return D3D.TextureFilter.PyramidalQuad;
}
if ( ( filterCaps & D3D.FilterCaps.MinAnisotropic ) == D3D.FilterCaps.MinAnisotropic )
{
return D3D.TextureFilter.Anisotropic;
}
if ( ( filterCaps & D3D.FilterCaps.MinLinear ) == D3D.FilterCaps.MinLinear )
{
return D3D.TextureFilter.Linear;
}
if ( ( filterCaps & D3D.FilterCaps.MinPoint ) == D3D.FilterCaps.MinPoint )
{
return D3D.TextureFilter.Point;
}
return D3D.TextureFilter.Point;
}