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\$
4
  • \$\begingroup\$ Do you have more than one display connected to the machine? \$\endgroup\$
    – MooseBoys
    Commented Dec 5, 2015 at 0:37
  • \$\begingroup\$ Yes, there are two displays. \$\endgroup\$
    – default
    Commented Dec 7, 2015 at 14:21
  • 2
    \$\begingroup\$ Does the screen tearing appear on screenshots? \$\endgroup\$
    – Philipp
    Commented Dec 8, 2015 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
    Commented Dec 8, 2015 at 17:38

2 Answers 2

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.

\$\endgroup\$
2
  • 3
    \$\begingroup\$ Why there was no tearing on OpenGL? \$\endgroup\$
    – cprn
    Commented Dec 9, 2015 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
    Commented Dec 9, 2015 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.

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

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .