Keep references to Images used by ImGui

This commit is contained in:
Simon Lübeß
2021-09-21 16:49:10 +02:00
parent 611782653c
commit eb2bbf4b82
4 changed files with 36 additions and 9 deletions
+22 -2
View File
@@ -1,4 +1,6 @@
using GlitchyEngine.Renderer;
using System.Collections;
using DirectX.D3D11;
namespace ImGui
{
@@ -6,14 +8,32 @@ namespace ImGui
extension ImGui
{
static List<ID3D11ShaderResourceView*> _resourceViews = new .() ~ delete _;
public static override void Image(Texture2D texture, Vec2 size, Vec2 uv0 = Vec2.Zero, Vec2 uv1 = Vec2.Ones, Vec4 tint_col = Vec4.Ones, Vec4 border_col = Vec4.Zero)
{
ImGui.Image(texture.nativeResourceView, size, uv0, uv1, tint_col, border_col);
var view = texture.nativeResourceView..AddRef();
_resourceViews.Add(view);
ImGui.Image(view, size, uv0, uv1, tint_col, border_col);
}
public static override void Image(RenderTarget2D texture, Vec2 size, Vec2 uv0 = Vec2.Zero, Vec2 uv1 = Vec2.Ones, Vec4 tint_col = Vec4.Ones, Vec4 border_col = Vec4.Zero)
{
ImGui.Image(texture._nativeResourceView, size, uv0, uv1, tint_col, border_col);
var view = texture._nativeResourceView..AddRef();
_resourceViews.Add(view);
ImGui.Image(view, size, uv0, uv1, tint_col, border_col);
}
protected internal static override void CleanupFrame()
{
for(var view in _resourceViews)
{
view.Release();
}
_resourceViews.Clear();
}
}
}