private void CreateCubeTexture()
{
Debug.Assert( SrcWidth > 0 && SrcHeight > 0 );
// use current back buffer format for render textures, else use the one
// defined by this texture format
XFG.SurfaceFormat xnaPixelFormat =
( Usage == TextureUsage.RenderTarget ) ? _bbPixelFormat : ( (XFG.SurfaceFormat)ChooseXnaFormat() );
// how many mips to use? make sure its at least one
int numMips = ( MipmapCount > 0 ) ? MipmapCount : 1;
//see comment in CreateNormalTexture() -DoubleA
//MipmapsHardwareGenerated = false;
//if ( _devCaps.TextureCapabilities.SupportsMipCubeMap )
//{
// MipmapsHardwareGenerated = true /*this.CanAutoGenMipMaps( xnaUsage, XFG.ResourceType.TextureCube, xnaPixelFormat ) */;
// if ( MipmapsHardwareGenerated )
// {
// numMips = 0;
// }
//}
//else
//{
// // no mip map support for this kind of texture
// MipmapCount = 0;
// numMips = 1;
//}
if ( Usage == TextureUsage.RenderTarget )
{
renderTarget = (XFG.Texture)(new XFG.RenderTargetCube(_device, SrcWidth, _mipmapCount > 0 ? true : false, xnaPixelFormat, XFG.DepthFormat.Depth24Stencil8)) as XFG.RenderTarget2D;
_cubeTexture = ( (XFG.Texture)renderTarget ) as XFG.RenderTargetCube;
CreateDepthStencil();
}
else
{
// create the cube texture
_cubeTexture = new XFG.TextureCube(_device, SrcWidth, (_mipmapCount > 0) ? true : false, xnaPixelFormat);
// store base reference to the texture
}
_texture = _cubeTexture;
SetFinalAttributes( SrcWidth, SrcHeight, 1, XnaHelper.Convert( xnaPixelFormat ) );
if ( MipmapsHardwareGenerated )
{
//Generating mip maps API is no longer exposed. RenderTargets will auto-generate their mipmaps
//but for other textures you're S.O.L. -DoubleA. See Shawn Hargreaves response to this thread: http://forums.create.msdn.com/forums/p/71559/436835.aspx
//_texture.GenerateMipMaps( GetBestFilterMethod() );
}
}