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