Skip to content

Commit

Permalink
fixes a bug with MonoGame and FNA when creating a texture at runtime
Browse files Browse the repository at this point in the history
fixes Mono not finding the dylib by prepending "lib"
  • Loading branch information
prime31 committed Feb 13, 2019
1 parent 7f3739a commit 0f32fae
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 30 deletions.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

<ItemGroup>
<Content Include="$(RepositoryRootDirectory)/deps/cimgui/win-x64/cimgui.dll" CopyToOutputDirectory="PreserveNewest" />
<Content Include="$(RepositoryRootDirectory)/deps/cimgui/osx-x64/cimgui.dylib" CopyToOutputDirectory="PreserveNewest" />
<Content Include="$(RepositoryRootDirectory)/deps/cimgui/osx-x64/libcimgui.dylib" CopyToOutputDirectory="PreserveNewest" />
<Content Include="$(RepositoryRootDirectory)/deps/cimgui/linux-x64/cimgui.so" CopyToOutputDirectory="PreserveNewest" />
</ItemGroup>

Expand Down
58 changes: 29 additions & 29 deletions src/ImGui.NET.SampleProgram.XNA/SampleGame.cs
Original file line number Diff line number Diff line change
Expand Up @@ -37,13 +37,18 @@ protected override void Initialize()

protected override void LoadContent()
{
// Texture loading example
// Texture loading example

// First, load the texture as a Texture2D (can also be done using the XNA/FNA content pipeline)
_xnaTexture = Texture2D.FromStream(GraphicsDevice, GenerateImage(300, 150));
// First, load the texture as a Texture2D (can also be done using the XNA/FNA content pipeline)
_xnaTexture = CreateTexture(GraphicsDevice, 300, 150, pixel =>
{
//Console.WriteLine( pixel );
var red = (pixel % 300) / 2;
return new Color(red, 1, 1);
});

// Then, bind it to an ImGui-friendly pointer, that we can use during regular ImGui.** calls (see below)
_imGuiTexture = _imGuiRenderer.BindTexture(_xnaTexture);
// Then, bind it to an ImGui-friendly pointer, that we can use during regular ImGui.** calls (see below)
_imGuiTexture = _imGuiRenderer.BindTexture(_xnaTexture);

base.LoadContent();
}
Expand Down Expand Up @@ -107,28 +112,23 @@ protected virtual void ImGuiLayout()
}
}

private static Stream GenerateImage(int width, int height)
{
var stream = new MemoryStream();
var random = new Random(42);

var bmp = new System.Drawing.Bitmap(width, height);
var graphics = System.Drawing.Graphics.FromImage(bmp);
graphics.Clear(System.Drawing.Color.Black);

for (int i = 0; i < 100; i++)
{
var size = random.Next(10, 50);
var pen = new System.Drawing.Pen(System.Drawing.Color.FromArgb(random.Next(0, 255), random.Next(0, 255), random.Next(0, 255)), random.Next(1, 4));

graphics.DrawEllipse(pen, random.Next(0, width), random.Next(0, height), size, size);
}

bmp.Save(stream, System.Drawing.Imaging.ImageFormat.Bmp);

stream.Position = 0;

return stream;
}
}
public static Texture2D CreateTexture(GraphicsDevice device, int width, int height, Func<int, Color> paint)
{
//initialize a texture
var texture = new Texture2D(device, width, height);

//the array holds the color for each pixel in the texture
Color[] data = new Color[width * height];
for(var pixel = 0; pixel < data.Length; pixel++)
{
//the function applies the color according to the specified pixel
data[pixel] = paint( pixel );
}

//set the color
texture.SetData( data );

return texture;
}
}
}

0 comments on commit 0f32fae

Please sign in to comment.