|
1 | 1 | using BCnEncoder.Decoder;
|
2 | 2 | using BCnEncoder.ImageSharp;
|
3 | 3 | using RenderWareIo;
|
| 4 | +using RenderWareIo.ReadWriteHelpers; |
4 | 5 | using RenderWareIo.Structs.Dff;
|
5 | 6 | using RenderWareIo.Structs.Ide;
|
6 | 7 | using RenderWareIo.Structs.Img;
|
@@ -90,28 +91,31 @@ public Dictionary<string, Image<Rgba32>> GetImages(Txd txd)
|
90 | 91 | {
|
91 | 92 | string sanitizedName = SanitizeName(texture.Data.TextureName);
|
92 | 93 | string format = texture.Data.TextureFormatString;
|
| 94 | + var dds = texture.GetDds(false); |
| 95 | + var data = DdsHelper.StripDdsHeader(dds); |
93 | 96 |
|
94 | 97 | Image<Rgba32> rgbaImage = new(texture.Data.Width, texture.Data.Height);
|
95 | 98 |
|
96 | 99 | switch (format)
|
97 | 100 | {
|
98 | 101 | case "RGB32":
|
| 102 | + case "BGRA32": |
99 | 103 | {
|
100 |
| - var image = Image.LoadPixelData<Bgra32>(texture.Data.Data, texture.Data.Width, texture.Data.Height); |
| 104 | + var image = Image.LoadPixelData<Bgra32>(data, texture.Data.Width, texture.Data.Height); |
101 | 105 | rgbaImage = image.CloneAs<Rgba32>();
|
102 | 106 | image.Dispose();
|
103 | 107 | break;
|
104 | 108 | }
|
105 | 109 | case "RGBA32":
|
106 | 110 | {
|
107 |
| - var image = Image.LoadPixelData<Rgba32>(texture.Data.Data, texture.Data.Width, texture.Data.Height); |
| 111 | + var image = Image.LoadPixelData<Rgba32>(data, texture.Data.Width, texture.Data.Height); |
108 | 112 | rgbaImage = image;
|
109 | 113 | break;
|
110 | 114 | }
|
111 | 115 | case "DXT1":
|
112 | 116 | {
|
113 | 117 | BcDecoder decoder = new();
|
114 |
| - Image<Rgba32> image = decoder.DecodeRawToImageRgba32(texture.Data.Data, texture.Data.Width, texture.Data.Height, BCnEncoder.Shared.CompressionFormat.Bc1); |
| 118 | + Image<Rgba32> image = decoder.DecodeRawToImageRgba32(data, texture.Data.Width, texture.Data.Height, BCnEncoder.Shared.CompressionFormat.Bc1); |
115 | 119 | rgbaImage = image;
|
116 | 120 | break;
|
117 | 121 | }
|
|
0 commit comments