6
\$\begingroup\$

I have a DirectX11 based engine / application that is showing screen tearing on a certain system. The system has a large TV monitor with a GTX 980 graphics card. The tearing tends to happen in roughly the same spot on the screen when the camera / eyepoint is moving around. If we change settings (e.g. turn Ambient occlusion on ) then the tearing might move to a different location but it is still consistent. Our statistics show that application is running at 60Hz and vsync is turned on in the application. We also have an OpenGL based version of the application that doesn't exhibit this problem.

Things we've tried:

  • Force vsync on in nvidia's control panel
  • Turn on triple buffering on in nvidia's control panel
  • Updated the nvidia driver
  • Changed the monitor's refresh rate (tried 60, 59, and 24 hz)

None of these changes have changed screen tearing behavior. What are other sources of screen tearing and how can they be addressed?

Update:

This computer is using windows 7 but doesn't have windows aero enabled (its using a classic theme). On another computer, that didn't initially have any tearing problems, turning off windows aero makes screen tearing occur in the application.

\$\endgroup\$
  • \$\begingroup\$ Do you have more than one display connected to the machine? \$\endgroup\$ – MooseBoys Dec 5 '15 at 0:37
  • \$\begingroup\$ Yes, there are two displays. \$\endgroup\$ – default Dec 7 '15 at 14:21
  • 2
    \$\begingroup\$ Does the screen tearing appear on screenshots? \$\endgroup\$ – Philipp Dec 8 '15 at 17:28
  • \$\begingroup\$ Just took several screenshots (using printscreen) and the tearing (which was visible on the montior) did not show up in any of the screenshots. \$\endgroup\$ – default Dec 8 '15 at 17:38
4
\$\begingroup\$

It appears the problem was due to Windows Aero being turned off on the target machine. According to the nvidia forum here, there is no way to enable vsync if windows aero is not enabled, so the only fix is to enable windows aero, which eliminates the screen tearing.

| improve this answer | |
\$\endgroup\$
  • 3
    \$\begingroup\$ Why there was no tearing on OpenGL? \$\endgroup\$ – cprn Dec 9 '15 at 1:14
  • 3
    \$\begingroup\$ I read several places that indicated that windows aero used directx and/or was more tightly coupled to directx. I found someone here that had the same issue I had with directx but not opengl. And the forum here suggests that "OpenGl, being tied into your display driver, can actually do a better job...[with vysnc stuff]". I would guess that directx relys on windows aero for vsync but the opengl goes around aero. \$\endgroup\$ – default Dec 9 '15 at 14:59
1
+25
\$\begingroup\$

In the menu of your graphics card you can select wether to use the global standart or "internal". You have to select the global standart. Then you can also disable "Multi-Threading". These two steps solved the same problem for me on my new PC.

| improve this answer | |
\$\endgroup\$
  • \$\begingroup\$ I don't understand. Can you clarify exactly what steps I should take? \$\endgroup\$ – default Dec 8 '15 at 17:12
  • \$\begingroup\$ Does your application use 3D graphics? \$\endgroup\$ – Nova Shadowflame Dec 8 '15 at 17:18
  • \$\begingroup\$ Yes it is primarily a 3d application. \$\endgroup\$ – default Dec 8 '15 at 17:21
  • \$\begingroup\$ Do you know where to find the 3D render setting of your graphics card? \$\endgroup\$ – Nova Shadowflame Dec 8 '15 at 17:24
  • \$\begingroup\$ Yes i'm using nvidia's control panel as mentioned in the question \$\endgroup\$ – default Dec 8 '15 at 17:27

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.