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);