Skip to content

Commit 9d92c9b

Browse files
committed
Fix for #7 hopefully.
1 parent a5160bf commit 9d92c9b

17 files changed

+4612
-6046
lines changed

Example/Program.cs

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,25 +5,27 @@
55

66
public class Program
77
{
8+
private const string DDSFilename = "assets/textures/test.dds";
9+
10+
private static byte[] LoadTexture(string path) => File.ReadAllBytes(Path.GetFullPath(path));
11+
812
private static unsafe void Main(string[] args)
913
{
14+
var path = Path.Combine("results", "LoadAndSaveFromDDSFile", "test.dds");
15+
Directory.CreateDirectory(Path.GetDirectoryName(path) ?? string.Empty);
1016
ScratchImage image = DirectXTex.CreateScratchImage();
11-
TexMetadata metadata = default;
12-
13-
string inputPath = "assets/textures/test.png";
14-
DirectXTex.LoadFromWICFile(inputPath, WICFlags.None, ref metadata, ref image, default).ThrowIf();
15-
ScratchImage mipChain = DirectXTex.CreateScratchImage();
17+
TexMetadata metadata;
1618

17-
int mipLevels = 4;
18-
DirectXTex.GenerateMipMaps2(image.GetImages(), 1, ref metadata, TexFilterFlags.ForceNonWic, (nuint)mipLevels, ref mipChain).ThrowIf();
19-
image.Release();
19+
DirectXTex.LoadFromDDSFile(DDSFilename, DDSFlags.None, &metadata, ref image);
2020

21-
metadata = mipChain.GetMetadata();
21+
Console.WriteLine(path);
22+
metadata = image.GetMetadata();
23+
DirectXTex.SaveToDDSFile2(image.GetImages(), image.GetImageCount(), ref metadata, DDSFlags.None, path);
2224

23-
string outputPath = "test.dds";
24-
DirectXTex.SaveToDDSFile2(mipChain.GetImages(), mipChain.GetImageCount(), ref metadata, DDSFlags.None, outputPath).ThrowIf();
25+
Console.WriteLine(path);
2526

26-
mipChain.Release();
27+
Span<byte> src = LoadTexture(DDSFilename);
28+
Span<byte> dest = LoadTexture(path);
2729
}
2830
}
2931
}

Generator/Generator.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@
22

33
<PropertyGroup>
44
<OutputType>Exe</OutputType>
5-
<TargetFramework>net8.0</TargetFramework>
5+
<TargetFramework>net9.0</TargetFramework>
66
<ImplicitUsings>enable</ImplicitUsings>
77
<Nullable>enable</Nullable>
88
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
99
<Configurations>Debug;Release;Standalone</Configurations>
1010
</PropertyGroup>
1111

1212
<ItemGroup>
13-
<PackageReference Include="HexaGen" Version="1.1.15-rc18" />
13+
<PackageReference Include="HexaGen" Version="1.1.15-rc22" />
1414
</ItemGroup>
1515

1616
<ItemGroup>

Hexa.NET.DirectXTex.Tests/DDSHelperFunctions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ public void EncodeDDSHeader()
1010
ArraySize = 1,
1111
Depth = 1,
1212
Dimension = TexDimension.Texture2D,
13-
Format = (int)Format.FormatR8G8B8A8Unorm,
13+
Format = (int)Format.R8G8B8A8Unorm,
1414
Height = 64,
1515
Width = 64,
1616
MipLevels = 4,
Lines changed: 38 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
namespace Hexa.NET.DirectXTex.Tests
22
{
3-
using Silk.NET.DXGI;
4-
53
public unsafe class DXGIFormatUtilities
64
{
75
[Test]
86
public void IsValid()
97
{
10-
if (!DirectXTex.IsValid((int)Format.FormatR16G16B16A16Uint))
8+
if (!DirectXTex.IsValid((int)Format.R16G16B16A16Uint))
119
Trace.Fail("Should be valid");
1210
if (DirectXTex.IsValid((int)(Format)(-1561658)))
1311
Trace.Fail("Should be invalid");
@@ -16,115 +14,115 @@ public void IsValid()
1614
[Test]
1715
public void IsCompressed()
1816
{
19-
if (!DirectXTex.IsCompressed((int)Format.FormatBC7Unorm))
17+
if (!DirectXTex.IsCompressed((int)Format.Bc7Unorm))
2018
Trace.Fail("Should be compressed");
21-
if (DirectXTex.IsCompressed((int)Format.FormatR16G16B16A16Uint))
19+
if (DirectXTex.IsCompressed((int)Format.R16G16B16A16Uint))
2220
Trace.Fail("Shouldn't be compressed");
2321
}
2422

2523
[Test]
2624
public void IsPacked()
2725
{
28-
if (!DirectXTex.IsPacked((int)Format.FormatR8G8B8G8Unorm))
26+
if (!DirectXTex.IsPacked((int)Format.R8G8B8G8Unorm))
2927
Trace.Fail("Should be packed");
30-
if (DirectXTex.IsPacked((int)Format.FormatR16G16B16A16Uint))
28+
if (DirectXTex.IsPacked((int)Format.R16G16B16A16Uint))
3129
Trace.Fail("Shouldn't be packed");
3230
}
3331

3432
[Test]
3533
public void IsVideo()
3634
{
37-
if (!DirectXTex.IsVideo((int)Format.FormatNV12))
35+
if (!DirectXTex.IsVideo((int)Format.Nv12))
3836
Trace.Fail("Should be video");
39-
if (DirectXTex.IsVideo((int)Format.FormatR16G16B16A16Uint))
37+
if (DirectXTex.IsVideo((int)Format.R16G16B16A16Uint))
4038
Trace.Fail("Shouldn't be video");
4139
}
4240

4341
[Test]
4442
public void IsPlanar()
4543
{
46-
if (!DirectXTex.IsPlanar((int)Format.FormatP010))
44+
if (!DirectXTex.IsPlanar((int)Format.P010))
4745
Trace.Fail("Should be planar");
48-
if (DirectXTex.IsPlanar((int)Format.FormatR16G16B16A16Uint))
46+
if (DirectXTex.IsPlanar((int)Format.R16G16B16A16Uint))
4947
Trace.Fail("Shouldn't be planar");
5048
}
5149

5250
[Test]
5351
public void IsPalettized()
5452
{
55-
if (!DirectXTex.IsPalettized((int)Format.FormatAI44))
53+
if (!DirectXTex.IsPalettized((int)Format.Ai44))
5654
Trace.Fail("Should be palettized");
57-
if (DirectXTex.IsPalettized((int)Format.FormatR16G16B16A16Uint))
55+
if (DirectXTex.IsPalettized((int)Format.R16G16B16A16Uint))
5856
Trace.Fail("Shouldn't be palettized");
5957
}
6058

6159
[Test]
6260
public void IsDepthStencil()
6361
{
64-
if (!DirectXTex.IsDepthStencil((int)Format.FormatD24UnormS8Uint))
62+
if (!DirectXTex.IsDepthStencil((int)Format.D24UnormS8Uint))
6563
Trace.Fail("Should be depthStencil");
66-
if (DirectXTex.IsDepthStencil((int)Format.FormatR16G16B16A16Uint))
64+
if (DirectXTex.IsDepthStencil((int)Format.R16G16B16A16Uint))
6765
Trace.Fail("Shouldn't be depthStencil");
6866
}
6967

7068
[Test]
7169
public void IsSRGB()
7270
{
73-
if (!DirectXTex.IsSRGB((int)Format.FormatB8G8R8A8UnormSrgb))
71+
if (!DirectXTex.IsSRGB((int)Format.B8G8R8A8UnormSrgb))
7472
Trace.Fail("Should be SRGB");
75-
if (DirectXTex.IsSRGB((int)Format.FormatR16G16B16A16Uint))
73+
if (DirectXTex.IsSRGB((int)Format.R16G16B16A16Uint))
7674
Trace.Fail("Shouldn't be SRGB");
7775
}
7876

7977
[Test]
8078
public void IsTypeless()
8179
{
82-
if (!DirectXTex.IsTypeless((int)Format.FormatB8G8R8A8Typeless, true))
80+
if (!DirectXTex.IsTypeless((int)Format.B8G8R8A8Typeless, true))
8381
Trace.Fail("Should be partial Typeless");
84-
if (!DirectXTex.IsTypeless((int)Format.FormatR32FloatX8X24Typeless, true))
82+
if (!DirectXTex.IsTypeless((int)Format.R32FloatX8X24Typeless, true))
8583
Trace.Fail("Should be partial Typeless");
86-
if (DirectXTex.IsTypeless((int)Format.FormatBC1Unorm, true))
84+
if (DirectXTex.IsTypeless((int)Format.Bc1Unorm, true))
8785
Trace.Fail("Shouldn't be partial Typeless");
8886

89-
if (!DirectXTex.IsTypeless((int)Format.FormatB8G8R8A8Typeless, false))
87+
if (!DirectXTex.IsTypeless((int)Format.B8G8R8A8Typeless, false))
9088
Trace.Fail("Should be Typeless");
91-
if (DirectXTex.IsTypeless((int)Format.FormatX32TypelessG8X24Uint, false))
89+
if (DirectXTex.IsTypeless((int)Format.X32TypelessG8X24Uint, false))
9290
Trace.Fail("Shouldn't be Typeless");
9391
}
9492

9593
[Test]
9694
public void HasAlpha()
9795
{
98-
if (!DirectXTex.HasAlpha((int)Format.FormatB8G8R8A8UnormSrgb))
96+
if (!DirectXTex.HasAlpha((int)Format.B8G8R8A8UnormSrgb))
9997
Trace.Fail("Should have alpha");
100-
if (DirectXTex.HasAlpha((int)Format.FormatG8R8G8B8Unorm))
98+
if (DirectXTex.HasAlpha((int)Format.G8R8G8B8Unorm))
10199
Trace.Fail("Shouldn't have alpha");
102100
}
103101

104102
[Test]
105103
public void BitsPerPixel()
106104
{
107-
if (DirectXTex.BitsPerPixel((int)Format.FormatR8G8B8A8Uint) != 32)
105+
if (DirectXTex.BitsPerPixel((int)Format.R8G8B8A8Uint) != 32)
108106
Trace.Fail("Should have 32Bits");
109-
if (DirectXTex.BitsPerPixel((int)Format.FormatR32G32B32A32Uint) == 32)
107+
if (DirectXTex.BitsPerPixel((int)Format.R32G32B32A32Uint) == 32)
110108
Trace.Fail("Shouldn't have 32Bits");
111109
}
112110

113111
[Test]
114112
public void BitsPerColor()
115113
{
116-
if (DirectXTex.BitsPerColor((int)Format.FormatR8G8B8A8Uint) != 8)
114+
if (DirectXTex.BitsPerColor((int)Format.R8G8B8A8Uint) != 8)
117115
Trace.Fail("Should have 8Bits per color");
118-
if (DirectXTex.BitsPerColor((int)Format.FormatR32G32B32A32Uint) == 8)
116+
if (DirectXTex.BitsPerColor((int)Format.R32G32B32A32Uint) == 8)
119117
Trace.Fail("Shouldn't have 8Bits per color");
120118
}
121119

122120
[Test]
123121
public void FormatDataType()
124122
{
125-
if (DirectXTex.FormatDataType((int)Format.FormatA8Unorm) != FormatType.Unorm)
123+
if (DirectXTex.FormatDataType((int)Format.A8Unorm) != FormatType.Unorm)
126124
Trace.Fail("Should be unorm");
127-
if (DirectXTex.FormatDataType((int)Format.FormatR32G32B32A32Uint) == FormatType.Float)
125+
if (DirectXTex.FormatDataType((int)Format.R32G32B32A32Uint) == FormatType.Float)
128126
Trace.Fail("Shouldn't be float");
129127
}
130128

@@ -135,7 +133,7 @@ public void ComputePitch()
135133
uint height = 64;
136134
nuint rowPitch = 0;
137135
nuint slicePitch = 0;
138-
DirectXTex.ComputePitch((int)Format.FormatR8G8B8A8Uint, width, height, &rowPitch, &slicePitch, CPFlags.None).ThrowIf();
136+
DirectXTex.ComputePitch((int)Format.R8G8B8A8Uint, width, height, &rowPitch, &slicePitch, CPFlags.None).ThrowIf();
139137

140138
nuint rowPitch2 = width * 4;
141139
nuint slicePitch2 = rowPitch2 * height;
@@ -148,37 +146,37 @@ public void ComputePitch()
148146
public void ComputeScanlines()
149147
{
150148
uint height = 64;
151-
var result = DirectXTex.ComputeScanlines((int)Format.FormatR8G8B8A8Uint, height);
149+
var result = DirectXTex.ComputeScanlines((int)Format.R8G8B8A8Uint, height);
152150
nuint expected = 64;
153151
Assert.That(expected, Is.EqualTo(result));
154152
}
155153

156154
[Test]
157155
public void MakeSRGB()
158156
{
159-
var result = DirectXTex.MakeSRGB((int)Format.FormatBC1Unorm);
160-
Assert.That((Format)result, Is.EqualTo(Format.FormatBC1UnormSrgb));
157+
var result = DirectXTex.MakeSRGB((int)Format.Bc1Unorm);
158+
Assert.That((Format)result, Is.EqualTo(Format.Bc1UnormSrgb));
161159
}
162160

163161
[Test]
164162
public void MakeTypeless()
165163
{
166-
var result = DirectXTex.MakeTypeless((int)Format.FormatBC1Unorm);
167-
Assert.That((Format)result, Is.EqualTo(Format.FormatBC1Typeless));
164+
var result = DirectXTex.MakeTypeless((int)Format.Bc1Unorm);
165+
Assert.That((Format)result, Is.EqualTo(Format.Bc1Typeless));
168166
}
169167

170168
[Test]
171169
public void MakeTypelessUNORM()
172170
{
173-
var result = DirectXTex.MakeTypelessUNORM((int)Format.FormatBC1Typeless);
174-
Assert.That((Format)result, Is.EqualTo(Format.FormatBC1Unorm));
171+
var result = DirectXTex.MakeTypelessUNORM((int)Format.Bc1Typeless);
172+
Assert.That((Format)result, Is.EqualTo(Format.Bc1Unorm));
175173
}
176174

177175
[Test]
178176
public void MakeTypelessFLOAT()
179177
{
180-
var result = DirectXTex.MakeTypelessFLOAT((int)Format.FormatR32G32B32A32Typeless);
181-
Assert.That((Format)result, Is.EqualTo(Format.FormatR32G32B32A32Float));
178+
var result = DirectXTex.MakeTypelessFLOAT((int)Format.R32G32B32A32Typeless);
179+
Assert.That((Format)result, Is.EqualTo(Format.R32G32B32A32Float));
182180
}
183181
}
184182
}

0 commit comments

Comments
 (0)