R – Bad behavior with Aero off in Vista

aerodirect3d9multiple-monitorswindows-vista

I have a directx9 application which needs to run on a machine with Aero disabled. The app runs in windowed mode. When the window is first created, it looks just fine within a single screen. When I move the window in such a way that it spans two screens attached to the same graphics adapter (and GPU) the region on one screen seems to mirror the region on the other screen. When I span two screens attached to different graphics adapters, I have no problem.

This is easily replicated with any standard windowed app, like "Tutorial 2: Vertices" in the August 09 DirectX SDK.

I see the same problem with a windowed OpenGL application.

This is not a problem when Windows is running with Aero enabled, but I need to run the application with Aero disabled. (Aero causes other issues in my actual application, flipping its own backbuffer at unpredictable times because of processing I'm doing in the GPU, screwing up the smoothness of my display in a manner undetectable to my render thread.)

I'm running Windows Vista Enterprise x64 with nVidia Quatro 4800 graphics cards.

–and, I just noticed this is only a problem when I use rotated screens, rotated 90 degrees in the nVidia Control Panel. I guess… that's it then? Can anyone suggest a solution when I use rotated screens?

Any ideas?

Best Answer

You can retrieve this information (rotated screen) and other display related settings with NVAPI (I don't know if ATI have a similar thing).

See their online documentation: http://http.developer.nvidia.com/nvapi/group__dispcontroltypes.html#g979f420611126581415c89112388e4d8

Notice that with DX10 and DX11, this is handled via DXGI (DXGI_MODE_ROTATION).

Related Topic