Dual monitor support?

Is it possible to design an application in Unity that uses two or more monitors?

We have gotten around this issue without any hacks by running the application in a full-size borderless window using the “-popupwindow” switch.

http://docs.unity3d.com/Documentation/Manual/CommandLineArguments.html

This will cause the application to open in a window at the full resolution with not borders or caption. As long as your desktop resolution is set to the app’s resolution, this looks just like a full-screen app.

Since Unity can create only one rendering window, you'll need something that fools windows into believing it has a ultra-high resolution wide desktop. There are several workaround methods for this:

1) install XP, which gives you the Horizontal Spanning mode, which allows wide desktops.

2) use a Matrox DualHead2Go to be able to split a "wide desktop" to two video signals. However, I have no experience with Laptops, and how you would configure your laptop display to show one part of your large desktop

3) buy another graphics card, link them with SLI/CrossFire, and use nvidia Surround / ATI EyeFinity, which re-introduces Horizontal Span as a brand new feature

4) without additional hardware, there is a tweak where you can get Unity to open a wide screen window which can be distributed to the two outputs of your graphics card, using the standard "DualView" mode that Windows provides.

The trick is to create a custom resolution (with the nvidia control panel) that is 1 pixel less than your wide resolution. Once this resolution is defined, it is available to Unity's resolution dialog. Start the app with that resolution (windowed, not fullscreen!), and the resulting window will fill the available space as good as possible (except for the window decorations/borders/title bar). With tools such as AutoHotKey you can get rid of these decorations, and have a fullscreen image. The disadvantage, however, is that the rendering canvas will be scaled, not resized, when hiding the window decorations, so your Anti-Aliasing will lose some quality.

For example, if you have 2 monitors with 720p each (=1280x720), create a custom resolution for 2559x719. Don't use that resolution, keep your monitors at 1280x720.

This thread describes this workaround in detail: http://forums.darkfallonline.com/showthread.php?t=242644

EDIT: See @Geo.Ego’s answer for a new and simple solution that prevents all this hassle with graphics cards, external hardware, etc.

EDIT2: And for reference, with the ATI/AMD FirePro series (and maybe others) you can group multiple graphics card outputs (3, 4, or more, depending on model) into one large desktop without any external hardware.

It depends on what you have in mind when you say develop an application for 2+ monitors. You can definitely display any application across more than one monitor. I personally work on projects for 3072*768 or 6144*768 resolutions which corresponds to 3 or 6 projector screens respectively. I use them as one stretched desktop and Unity content displays just fine (besides some perspective distortion). If you directly target multiple monitors, you can lay out your GUI and content to be displayed on either one of your monitors. by just placing it in the appropriate area of your scene view. If I have a GUI element in the left third of the screen within the editor, I can rest assured that it will display on my very left projector (when using 3). You can also use more than one viewport to display different cameras on different monitors. If you have 3 monitors arranged horizontally, use one viewport for each third of your display width (or any other arrangement which you find useful).

Another Solution which works is to install SoftTH, a pretty neat little app which allows you span multiple monitors in Windows7. We have had some pretty decent results with it. More info on it can be found at kegetys.fi - SoftTH Software Triplehead

March 2013

Multi-monitor support arrives in 4.1 due any day now.

Another option is to have unity talk with an external module/application. This way they can share their information and provide feedback in the way you want. By doing this you can then use multiple screens at any resolution in any placement.

Just a suggestion of course.