示例#1
0
        public Texture2DSlim(RawDataFormat dataFormat, TextureFormat format, byte[] rawData)
        {
            DataFormat = dataFormat;
            switch (dataFormat)
            {
            case RawDataFormat.DXT:
                if (format != TextureFormat.DXT1 && format != TextureFormat.DXT5)
                {
                    throw new ArgumentOutOfRangeException(nameof(format), "Invalid TextureFormat. Only DXT1 and DXT5 formats are supported by this method.");
                }
                Format = format;
                var ddsSizeCheck = rawData[4];
                if (ddsSizeCheck != 124)
                {
                    throw new ArgumentOutOfRangeException(nameof(rawData), "Invalid DDS DXTn texture. Unable to read");     // this header byte should be 124 for DDS image files
                }
                Height = (rawData[13] << 8) | rawData[12];
                Width  = (rawData[17] << 8) | rawData[16];
                var dxtBytes = new byte[rawData.Length - DDS_HEADER_SIZE];
                Buffer.BlockCopy(dxtBytes, DDS_HEADER_SIZE, dxtBytes, 0, rawData.Length - DDS_HEADER_SIZE);
                RawData = dxtBytes;
                return;

            case RawDataFormat.Raw:
                RawData = rawData;
                return;

            default: throw new NotImplementedException($"{dataFormat}");
            }
        }
示例#2
0
 public Texture2DInfo(RawDataFormat dataFormat, TextureFormat format, byte[] rawData)
 {
     DataFormat = dataFormat;
     switch (dataFormat)
     {
     // https://answers.unity.com/questions/555984/can-you-load-dds-textures-during-runtime.html#answer-707772
     case RawDataFormat.DXT:
         if (format != TextureFormat.DXT1 && format != TextureFormat.DXT5)
         {
             throw new ArgumentOutOfRangeException("format", "Invalid TextureFormat. Only DXT1 and DXT5 formats are supported by this method.");
         }
         Format = format;
         var ddsSizeCheck = rawData[4];
         if (ddsSizeCheck != 124)
         {
             throw new ArgumentOutOfRangeException("ddsBytes", "Invalid DDS DXTn texture. Unable to read");      // this header byte should be 124 for DDS image files
         }
         Height = (rawData[13] << 8) | rawData[12];
         Width  = (rawData[17] << 8) | rawData[16];
         var dxtBytes = new byte[rawData.Length - DDS_HEADER_SIZE];
         Buffer.BlockCopy(dxtBytes, DDS_HEADER_SIZE, dxtBytes, 0, rawData.Length - DDS_HEADER_SIZE);
         RawData = dxtBytes;
         return;
     }
 }
示例#3
0
 public Texture2DSlim(int width, int height, TextureFormat format, bool hasMipmaps, byte[] rawData)
 {
     DataFormat = RawDataFormat.Raw;
     Width      = width;
     Height     = height;
     Format     = format;
     HasMipmaps = hasMipmaps;
     RawData    = rawData;
 }
        public void FromYaml(YamlNode yamlNode)
        {
            YamlMappingNode node = yamlNode as YamlMappingNode;

            Enabled             = (node["enabled"] as YamlScalarNode).Value == "true";
            MaxQueuedMessages   = Convert.ToInt32((node["max-queued-messages"] as YamlScalarNode).Value);
            DatabaseUrl         = (node["database-url"] as YamlScalarNode).Value;
            ConnectRetrySeconds = Convert.ToInt32((node["connect-retry-seconds"] as YamlScalarNode).Value);
            StoreMeasurement    = (node["store-measurement"] as YamlScalarNode).Value == "true";
            StoreRawMessage     = (node["store-raw-message"] as YamlScalarNode).Value == "true";
            TableName           = (node["table-name"] as YamlScalarNode).Value;
            RawTableName        = (node["raw-table-name"] as YamlScalarNode).Value;
            RawDataFormat       = (RawDataFormat)Convert.ToInt32((node["raw-data-format"] as YamlScalarNode).Value);
        }
示例#5
0
 public void LoadImage(byte[] data)
 {
     using (var ms = new MemoryStream(data))
         using (var r = new EndianBinaryReader(ms, Endian.LittleEndian))
         {
             var magicString = r.ReadBytes(4);
             if (!"IMG ".EqualsASCIIBytes(magicString))
             {
                 throw new FileFormatException($"Invalid IMG file magic string: \"{Encoding.ASCII.GetString(magicString)}\".");
             }
             DataFormat = (RawDataFormat)r.ReadByte();
             HasMipmaps = r.ReadByte() != 0;
             Format     = (TextureFormat)r.ReadInt16();
             Width      = r.ReadInt32();
             Height     = r.ReadInt32();
             var rawDataSize = r.ReadInt32();
             RawData = r.ReadBytes(rawDataSize);
         }
 }