public Result UnwrapUnderlyingResource <T>(IDirect3DResource9 resource, ComObject commandQueue, out T?resource12) where T : ComObject { Result result = UnwrapUnderlyingResource(resource, commandQueue, typeof(T).GUID, out IntPtr nativePtr); if (result.Success) { resource12 = MarshallingHelpers.FromPointer <T>(nativePtr); return(result); } resource12 = null; return(result); }
public unsafe Result ReturnUnderlyingResource(IDirect3DResource9 resource, ReadOnlySpan <ulong> signalValues, ReadOnlySpan <ComObject> fences) { if (signalValues.Length != fences.Length) { throw new ArgumentException($"{nameof(signalValues)} and {nameof(fences)} length must be the same"); } IntPtr *ppFences = stackalloc IntPtr[fences.Length]; for (int i = 0; i < fences.Length; i++) { ppFences[i] = (fences[i] == null) ? IntPtr.Zero : fences[i].NativePointer; } fixed(ulong *pSignalValues = signalValues) { return(ReturnUnderlyingResource(resource, signalValues.Length, pSignalValues, ppFences)); } }
public T UnwrapUnderlyingResource <T>(IDirect3DResource9 resource, ComObject commandQueue) where T : ComObject { UnwrapUnderlyingResource(resource, commandQueue, typeof(T).GUID, out IntPtr nativePtr).CheckError(); return(MarshallingHelpers.FromPointer <T>(nativePtr) !); }