From b5fdbe210643dd54a061ae8b2dc99827ae3189d6 Mon Sep 17 00:00:00 2001 From: Michael Berthaud Date: Sun, 12 Jul 2026 23:08:06 -0400 Subject: [PATCH] Add library loading overloads to Renderdoc loading --- .../Evergine.Bindings.RenderDoc/RenderDoc.cs | 36 ++++++++++++++++--- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/RenderDocGen/Evergine.Bindings.RenderDoc/RenderDoc.cs b/RenderDocGen/Evergine.Bindings.RenderDoc/RenderDoc.cs index 6d10f9e..248fd0f 100644 --- a/RenderDocGen/Evergine.Bindings.RenderDoc/RenderDoc.cs +++ b/RenderDocGen/Evergine.Bindings.RenderDoc/RenderDoc.cs @@ -22,18 +22,44 @@ public unsafe class RenderDoc public static bool Load(out RenderDoc renderDoc) { var libName = GetRenderDocLibName(); - if (NativeLibrary.TryLoad(libName, out var lib) || - NativeLibrary.TryLoad(libName, typeof(RenderDoc).Assembly, null, out lib)) + return Load(libName, out renderDoc); + } + + /// + /// Attempts to load RenderDoc. + /// + /// library .dll or .so name + /// The RenderDoc instance. + /// Whether RenderDoc was successfully loaded. + public static bool Load(string libraryName, out RenderDoc renderDoc) + { + if (NativeLibrary.TryLoad(libraryName, out var lib) || + NativeLibrary.TryLoad(libraryName, typeof(RenderDoc).Assembly, null, out lib)) { - renderDoc = new RenderDoc(lib); - return true; + return Load(lib, out renderDoc); } renderDoc = null; return false; } - private unsafe RenderDoc(IntPtr nativeLib) + /// + /// Attempts to load RenderDoc. + /// + /// native handle to loaded native renderdoc library + /// The RenderDoc instance. + /// Whether RenderDoc was successfully loaded. + public static bool Load(nint nativeLib, out RenderDoc renderDoc) + { + renderDoc = null; + if (nativeLib != 0) + { + renderDoc = new RenderDoc(nativeLib); + } + return renderDoc != null; + } + + private RenderDoc(nint nativeLib) { NativeLibrary.TryGetExport(nativeLib, "RENDERDOC_GetAPI", out IntPtr funcPtr); var getApiDelegate = Marshal.GetDelegateForFunctionPointer(funcPtr);