SerpentAI / D3DShot

Extremely fast and robust screen capture on Windows with the Desktop Duplication API
MIT License
328 stars 74 forks source link

Slow performance #40

Open jackz314 opened 3 years ago

jackz314 commented 3 years ago

I just tried out D3DShot on my PC and the performance is pretty slow. My native display resolution is 3840x2160, and the graphics card is Nvidia GTX 1080, the average fps I'm getting is about 20. I tried benchmark with both the included benchmark method, and by counting the total frames added. Both yield similarly slow performance. Below is one of the many benchmark runs:

Capture Output: NumpyCaptureOutput Display: <Display name=Generic PnP Monitor adapter=NVIDIA GeForce GTX 1080 resolution=3840x2160 rotation=0 scale_factor=2.5 primary=True>

Capturing as many frames as possible in the next 60 seconds... Go! Done! Results: 20.4833 FPS

I looked at other issues with D3DShots and tried out some ways to improve this, for example, I tried running a Windowed or Fullscreen game when benchmarking, I also tried just staying in normal desktop environment, both yield similar results.

My graphics card driver is up-to-date (GeForce 460.89, 12/15/2020), my Windows 10 version is 2004, build 21277.1000.

To clarify, everything else graphics related is normal, games would run at normal FPS (60+), and nothing lags or is slow.

jackz314 commented 3 years ago

I have also tried different resolutions and scaling factors, and surprisingly (or unsurprisingly) nothing helped, the FPS stayed at about the same level, with slight improvement from the native resolution (4K) 's ~20 fps to 1080p's ~25 fps. Also, I tried D3DShot on my laptop with a 1080p screen and an Intel UHD 620, which worked really well and was very fast, so could this be a driver/graphics card/resolution problem?

Pro100rus32 commented 3 years ago

Can I use your code to check fps?

hanrai commented 3 years ago

Same here: Preparing Benchmark...

Capture Output: NumpyCaptureOutput Display: <Display name=Generic PnP Monitor adapter=NVIDIA GeForce GTX 1060 6GB resolution=1680x1050 rotation=0 scale_factor=1.0 primary=True>

Capturing as many frames as possible in the next 60 seconds... Go! Done! Results: 28.117 FPS