예제 #1
0
        private static Texture CreateTextureFromTga(
            GraphicsDevice graphicsDevice,
            ResourceUploadBatch uploadBatch,
            TgaFile tgaFile,
            bool generateMipMaps)
        {
            if (tgaFile.Header.ImageType != TgaImageType.UncompressedRgb)
            {
                throw new InvalidOperationException();
            }

            var data = ConvertTgaPixels(
                tgaFile.Header.ImagePixelSize,
                tgaFile.Data);

            TextureMipMapData[] mipMapData;
            if (generateMipMaps)
            {
                mipMapData = MipMapUtility.GenerateMipMaps(
                    tgaFile.Header.Width,
                    tgaFile.Header.Height,
                    data);
            }
            else
            {
                mipMapData = new[]
                {
                    new TextureMipMapData
                    {
                        Data        = data,
                        BytesPerRow = tgaFile.Header.Width * 4
                    }
                };
            }

            return(Texture.CreateTexture2D(
                       graphicsDevice,
                       uploadBatch,
                       PixelFormat.Rgba8UNorm,
                       tgaFile.Header.Width,
                       tgaFile.Header.Height,
                       mipMapData));
        }
예제 #2
0
        public static TextureMipMapData[] GetData(TgaFile tgaFile, bool generateMipMaps)
        {
            var data = TgaFile.ConvertPixelsToRgba8(tgaFile);

            if (generateMipMaps)
            {
                return(MipMapUtility.GenerateMipMaps(
                           tgaFile.Header.Width,
                           tgaFile.Header.Height,
                           data));
            }
            else
            {
                return(new[]
                {
                    new TextureMipMapData
                    {
                        Data = data,
                        BytesPerRow = tgaFile.Header.Width * 4
                    }
                });
            }
        }