0
mirror of https://github.com/sampletext32/ParkanPlayground.git synced 2025-06-18 23:59:46 +03:00

texture viewer

This commit is contained in:
bird_egop
2024-11-19 02:13:14 +03:00
parent 08c8d07d91
commit 5f84617567
5 changed files with 285 additions and 28 deletions

View File

@ -1,16 +1,20 @@
using ImGuiNET;
using System.Numerics;
using ImGuiNET;
using NResUI.Abstractions;
using NResUI.Models;
using Silk.NET.OpenGL;
namespace NResUI.ImGuiUI;
public class TexmExplorer : IImGuiPanel
{
private readonly TexmExplorerViewModel _viewModel;
private readonly GL _openGl;
public TexmExplorer(TexmExplorerViewModel viewModel)
public TexmExplorer(TexmExplorerViewModel viewModel, GL openGl)
{
_viewModel = viewModel;
_openGl = openGl;
}
public void OnImGuiRender()
@ -49,7 +53,7 @@ public class TexmExplorer : IImGuiPanel
ImGui.SameLine();
ImGui.Text(_viewModel.TexmFile.Header.Stride.ToString());
ImGui.Text("Magic1: ");
ImGui.Text("Magic1 (possibly ddsCaps): ");
ImGui.SameLine();
ImGui.Text(_viewModel.TexmFile.Header.Magic1.ToString());
@ -64,6 +68,45 @@ public class TexmExplorer : IImGuiPanel
ImGui.Text("IsIndexed: ");
ImGui.SameLine();
ImGui.Text(_viewModel.TexmFile.IsIndexed.ToString());
ImGui.Checkbox("Включить чёрный фон", ref _viewModel.IsBlackBgEnabled);
ImGui.Checkbox("Включить белый фон", ref _viewModel.IsWhiteBgEnabled);
if (_viewModel.IsWhiteBgEnabled && _viewModel.IsBlackBgEnabled)
{
_viewModel.IsBlackBgEnabled = false;
_viewModel.IsWhiteBgEnabled = false;
}
_viewModel.GenerateGlTextures(_openGl);
var drawList = ImGui.GetWindowDrawList();
for (var index = 0; index < _viewModel.GlTextures.Count; index++)
{
var glTexture = _viewModel.GlTextures[index];
var screenPos = ImGui.GetCursorScreenPos();
if (_viewModel.IsBlackBgEnabled)
{
drawList.AddRectFilled(screenPos, screenPos + new Vector2(glTexture.Width, glTexture.Height), 0xFF000000);
}
else if (_viewModel.IsWhiteBgEnabled)
{
drawList.AddRectFilled(screenPos, screenPos + new Vector2(glTexture.Width, glTexture.Height), 0xFFFFFFFF);
}
ImGui.Image((IntPtr) glTexture.GlTexture, new Vector2(glTexture.Width, glTexture.Height));
ImGui.SameLine();
if (ImGui.IsItemHovered())
{
var mousePos = ImGui.GetMousePos();
var relativePos = mousePos - screenPos;
ImGui.Text("Hovering over: ");
ImGui.SameLine();
ImGui.Text(relativePos.ToString());
}
}
}
}