private void WriteHeader(bool alpha)
        {
            VTFHeader header = new VTFHeader();
            header.V = 'V';
            header.T = 'T';
            header.F = 'F';
            header.Null = '\0';

            header.VersionMajor = 7;
            header.VersionMinor = 2;

            header.HeaderSize = 0x50;

            header.Width = (ushort)_baseImageSize;
            header.Height = (ushort)_baseImageSize;

            header.Flags = 0x2200;

            header.Frames = (ushort)_imageFrames;
            header.FirstFrame = 0;

            header.Padding00 = 0;
            header.Padding01 = 0;
            header.Padding02 = 0;
            header.Padding03 = 0;

            header.Reflectivity0 = 1;
            header.Reflectivity1 = 1;
            header.Reflectivity2 = 1;

            header.Padding10 = 0;
            header.Padding11 = 0;
            header.Padding12 = 0;
            header.Padding13 = 0;

            header.BumpmapScale = 1;

            header.HighResImageFormat = (uint)(alpha ? 0xF : 0xD);

            header.MipmapCount = (byte)(_numMipmaps);

            header.LowResImageFormat = (uint)0xD;
            header.LowResImageHeight = (byte)(_baseImageSize <= 16 ? _baseImageSize : 16);
            header.LowResImageWidth = (byte)(_baseImageSize <= 16 ? _baseImageSize : 16);

            header.Depth = 1;

            // Create a byte array to hold our header and initialize the elements to 0.
            // The last 15 bytes should be padding (0s)
            int size = Marshal.SizeOf(header);

            byte[] arr = new byte[size + 15];
            for (int i = 0; i < size; i++)
            {
                arr[i] = 0;
            }

            IntPtr ptr = Marshal.AllocHGlobal(size);

            Marshal.StructureToPtr(header, ptr, true);
            Marshal.Copy(ptr, arr, 0, size);
            Marshal.FreeHGlobal(ptr);

            _output.WriteData(arr);
        }
Exemple #2
0
        private void WriteHeader(bool alpha)
        {
            VTFHeader header = new VTFHeader();

            header.V    = 'V';
            header.T    = 'T';
            header.F    = 'F';
            header.Null = '\0';

            header.VersionMajor = 7;
            header.VersionMinor = 2;

            header.HeaderSize = 0x50;

            header.Width  = (ushort)_baseImageSize;
            header.Height = (ushort)_baseImageSize;

            header.Flags = 0x2200;

            header.Frames     = (ushort)_imageFrames;
            header.FirstFrame = 0;

            header.Padding00 = 0;
            header.Padding01 = 0;
            header.Padding02 = 0;
            header.Padding03 = 0;

            header.Reflectivity0 = 1;
            header.Reflectivity1 = 1;
            header.Reflectivity2 = 1;

            header.Padding10 = 0;
            header.Padding11 = 0;
            header.Padding12 = 0;
            header.Padding13 = 0;

            header.BumpmapScale = 1;

            header.HighResImageFormat = (uint)(alpha ? 0xF : 0xD);

            header.MipmapCount = (byte)(_numMipmaps);

            header.LowResImageFormat = (uint)0xD;
            header.LowResImageHeight = (byte)(_baseImageSize <= 16 ? _baseImageSize : 16);
            header.LowResImageWidth  = (byte)(_baseImageSize <= 16 ? _baseImageSize : 16);

            header.Depth = 1;

            // Create a byte array to hold our header and initialize the elements to 0.
            // The last 15 bytes should be padding (0s)
            int size = Marshal.SizeOf(header);

            byte[] arr = new byte[size + 15];
            for (int i = 0; i < size; i++)
            {
                arr[i] = 0;
            }

            IntPtr ptr = Marshal.AllocHGlobal(size);

            Marshal.StructureToPtr(header, ptr, true);
            Marshal.Copy(ptr, arr, 0, size);
            Marshal.FreeHGlobal(ptr);

            _output.WriteData(arr);
        }