unsafe int PresentHook(IntPtr devicePtr, SharpDX.Rectangle *pSourceRect, SharpDX.Rectangle *pDestRect, IntPtr hDestWindowOverride, IntPtr pDirtyRegion) { // Example of using delegate to original function pointer to call original method //var original = (Direct3D9Device_PresentDelegate)(Object)Marshal.GetDelegateForFunctionPointer(id3dDeviceFunctionAddresses[(int)Direct3DDevice9FunctionOrdinals.Present], typeof(Direct3D9Device_PresentDelegate)); //try //{ // unsafe // { // return original(devicePtr, ref pSourceRect, ref pDestRect, hDestWindowOverride, pDirtyRegion); // } //} //catch { } _isUsingPresent = true; Device device = (Device)devicePtr; DoCaptureRenderTarget(device, "PresentHook"); if (pSourceRect == null || *pSourceRect == SharpDX.Rectangle.Empty) { device.Present(); } else { if (hDestWindowOverride != IntPtr.Zero) { device.Present(*pSourceRect, *pDestRect, hDestWindowOverride); } else { device.Present(*pSourceRect, *pDestRect); } } return(SharpDX.Result.Ok.Code); }
// Used in the overlay unsafe int PresentExHook(IntPtr devicePtr, SharpDX.Rectangle *pSourceRect, SharpDX.Rectangle *pDestRect, IntPtr hDestWindowOverride, IntPtr pDirtyRegion, Present dwFlags) { _isUsingPresent = true; DeviceEx device = (DeviceEx)devicePtr; DoCaptureRenderTarget(device, "PresentEx"); // Region region = new Region(pDirtyRegion); if (pSourceRect == null || *pSourceRect == SharpDX.Rectangle.Empty) { device.PresentEx(dwFlags); } else { if (hDestWindowOverride != IntPtr.Zero) { device.PresentEx(dwFlags, *pSourceRect, *pDestRect, hDestWindowOverride); } else { device.PresentEx(dwFlags, *pSourceRect, *pDestRect); } } return(SharpDX.Result.Ok.Code); }
private unsafe int PresentHook( IntPtr devicePtr, SharpDX.Rectangle *pSourceRect, SharpDX.Rectangle *pDestRect, IntPtr hDestWindowOverride, IntPtr pDirtyRegion) { try { Device device = (Device)devicePtr; if (presentHookRecurse == 0 && hooksStarted) { this.DoCaptureRenderTarget(device, "PresentHook"); } this.presentHookRecurse++; var original = (Direct3D9Device_PresentDelegate)Marshal.GetDelegateForFunctionPointer(this.id3dDeviceFunctionAddresses[(int)Direct3DDevice9FunctionOrdinals.Present], typeof(Direct3D9Device_PresentDelegate)); original(devicePtr, pSourceRect, pDestRect, hDestWindowOverride, pDirtyRegion); } catch (Exception ex) { DebugMessage(ex.ToString()); } finally { this.presentHookRecurse--; } return(Result.Ok.Code); }
unsafe int PresentHook(IntPtr devicePtr, SharpDX.Rectangle *pSourceRect, SharpDX.Rectangle *pDestRect, IntPtr hDestWindowOverride, IntPtr pDirtyRegion) { _isUsingPresent = true; Device device = (Device)devicePtr; DoCaptureRenderTarget(device, "PresentHook"); if (pSourceRect == null || *pSourceRect == SharpDX.Rectangle.Empty) { device.Present(); } else { if (hDestWindowOverride != IntPtr.Zero) { device.Present(*pSourceRect, *pDestRect, hDestWindowOverride); } else { device.Present(*pSourceRect, *pDestRect); } } return(SharpDX.Result.Ok.Code); }
unsafe int PresentHook(IntPtr devicePtr, SharpDX.Rectangle *pSourceRect, SharpDX.Rectangle *pDestRect, IntPtr hDestWindowOverride, IntPtr pDirtyRegion) { _isUsingPresent = true; Device device = (Device)devicePtr; DoCaptureRenderTarget(device, "PresentHook"); DoVblankWait(); int result = Direct3DDevice_PresentHook.Original(devicePtr, pSourceRect, pDestRect, hDestWindowOverride, pDirtyRegion); return(result); }
// Used in the overlay unsafe int PresentExHook(IntPtr devicePtr, SharpDX.Rectangle *pSourceRect, SharpDX.Rectangle *pDestRect, IntPtr hDestWindowOverride, IntPtr pDirtyRegion, Present dwFlags) { _isUsingPresent = true; DeviceEx device = (DeviceEx)devicePtr; DoCaptureRenderTarget(device, "PresentEx"); //shantae half genie hero uses Direct3D9Ex DoVblankWait(); int result = Direct3DDeviceEx_PresentExHook.Original(devicePtr, pSourceRect, pDestRect, hDestWindowOverride, pDirtyRegion, dwFlags); return(result); }
private unsafe int SwapChainPresentHook( IntPtr swapChainPtr, SharpDX.Rectangle *pSourceRect, SharpDX.Rectangle *pDestRect, IntPtr hDestWindowOverride, IntPtr pDirtyRegion, Present dwFlags) { SwapChain swapchain = (SwapChain)swapChainPtr; if (presentHookRecurse == 0 && hooksStarted) { DoCaptureRenderTarget(currentDevice, "SwapChainPresentHook"); } presentHookRecurse++; var original = (SwapChain_PresentDelegate)Marshal.GetDelegateForFunctionPointer(this.id3dDeviceFunctionAddresses[(int)Direct3DSwapChain9Ordinals.Present], typeof(SwapChain_PresentDelegate)); original(swapChainPtr, pSourceRect, pDestRect, hDestWindowOverride, pDirtyRegion, dwFlags); presentHookRecurse--; return(Result.Ok.Code); }