private void FixupInternalState() { HeaderFlags |= (HeaderFlagsEnum.Caps | HeaderFlagsEnum.Height | HeaderFlagsEnum.Width | HeaderFlagsEnum.PixelFormat); SurfaceFlags |= SurfaceFlagsEnum.Texture; //cubemap if (CubemapFlags != CubemapFlagsEnum.Volume && CubemapFlags != 0) { CubemapFlags |= CubemapFlagsEnum.Cubemap; SurfaceFlags |= SurfaceFlagsEnum.Complex; if (IsDX10Mode) { CubemapFlags |= CubemapFlagsEnum.AllFaces; MiscFlags |= MiscFlagsEnum.TextureCube; } } if (IsDX10Mode && MiscFlags.HasFlag(MiscFlagsEnum.TextureCube)) { CubemapFlags |= CubemapFlagsEnum.Cubemap | CubemapFlagsEnum.AllFaces; SurfaceFlags |= SurfaceFlagsEnum.Complex; } //volume textures if (HeaderFlags.HasFlag(HeaderFlagsEnum.Depth) || CubemapFlags.HasFlag(CubemapFlagsEnum.Volume)) { HeaderFlags |= HeaderFlagsEnum.Depth; CubemapFlags |= CubemapFlagsEnum.Volume; SurfaceFlags |= SurfaceFlagsEnum.Complex; } //sanatize pixel flags if (PixelFlags.HasFlag(PixelFlagsEnum.Rgb) && PixelFlags.HasFlag(PixelFlagsEnum.AlphaPixels)) { PixelFlags = PixelFlagsEnum.Rgb | PixelFlagsEnum.AlphaPixels; } else if (PixelFlags.HasFlag(PixelFlagsEnum.Rgb)) { PixelFlags = PixelFlagsEnum.Rgb; } else if (PixelFlags.HasFlag(PixelFlagsEnum.Luminance) && PixelFlags.HasFlag(PixelFlagsEnum.AlphaPixels)) { PixelFlags = PixelFlagsEnum.Luminance | PixelFlagsEnum.AlphaPixels; } else if (PixelFlags.HasFlag(PixelFlagsEnum.Luminance)) { PixelFlags = PixelFlagsEnum.Luminance; } else if (PixelFlags.HasFlag(PixelFlagsEnum.FourCC)) { PixelFlags = PixelFlagsEnum.FourCC; } else if (PixelFlags.HasFlag(PixelFlagsEnum.Yuv)) { PixelFlags = PixelFlagsEnum.Yuv; } else if (PixelFlags.HasFlag(PixelFlagsEnum.Alpha)) { PixelFlags = PixelFlagsEnum.Alpha; } if (!PixelFlags.HasFlag(PixelFlagsEnum.FourCC)) { //uncompressed HeaderFlags |= HeaderFlagsEnum.Pitch; HeaderFlags &= ~HeaderFlagsEnum.LinearSize; } else { //dont know //HeaderFlags |= HeaderFlagsEnum.LinearSize; //HeaderFlags &= ~HeaderFlagsEnum.Pitch; } if (IsDX10Mode) { if (ResourceDimension == ResourceDimensionEnum.Texture3D || HeaderFlags.HasFlag(HeaderFlagsEnum.Depth)) { ResourceDimension = ResourceDimensionEnum.Texture3D; HeaderFlags |= HeaderFlagsEnum.Depth; CubemapFlags |= CubemapFlagsEnum.Volume; SurfaceFlags |= SurfaceFlagsEnum.Complex; } } Width = Math.Max(Width, 1); Height = Math.Max(Height, 1); Depth = HeaderFlags.HasFlag(HeaderFlagsEnum.Depth) ? Math.Max(Depth, 1) : 0; MipmapCount = HeaderFlags.HasFlag(HeaderFlagsEnum.MipmapCount) ? Math.Max(MipmapCount, 1) : 0; }