how to specify which screen blenderplayer outputs to in fullscreen mode?

I’m experimenting with using the BGE for some realtime video jobs.
For this I need to:

  • produce an interlaced 25fps display (i.e. 50 fields/sec)
  • specify which screen to render to (ie I have a black magic video card and want the BGE to output to display number 3)
  • render non square pixels, ie anamorphic pixels with a 1.42 aspect
  • also, it would be good to output a key signal, but I’m looking into that further before posting a question about it.

I’ve been mucking around with the command line options of blenderplayer, and have gotten stuck with these final points.
Any clues?
Is this possible?

Doesn’t your graphics card do all that stuff? At least the interlacing should be done by it. the BGE delivers with 60 fps enough images to produce a fluid movement at 25i
For the screen specifying, that depends on how your hardware works. You’ll probably have to access the drivers somehow if you really want to turn on and of the output (no idea how to do that in python though). Alternatively, you could set up your system as span, so that your OS handles all the screens as one large screen, and then using the split screen technique (I’ve seen something on a yofrankie multiplayer mode use it, you might want to search for that) to display different stuff on different screens by splitting your output exactly between the two screens. To screens you don’t need, you just send black. Since you’re probably gonna output on PAL or NTSC (I guess from the interlacing?) you shouldn’t have too much problems with high resolutions.
As for the non square pixels, isn’t this also internally processed by your graphics card? Mine does.
for the key output, that’s a tricky one. no idea on how to display the alpha channel, maybe a custom 2D filter? Output should be possible I guess if you use the splitscreen technique again.

On how many screens are you planning to display? Most OS don’t support more than 2. I’m not sure but I thought Mac supports more.

Yeah, I agree, it could be done with access to the drivers (which is waaay out of my expertise).

The interlacing may be handled by the video card. I’m looking into that. I realise that 50 fields/sec is generally not going to be an issue for the BGE (depending on scene complexity, of course) it’s more about how to do the interlacing.

On the Black Magic card their are three outputs. One of them (the way we have things configured anyway) outputs a PAL 16:9 anamorphic signal (that is, 720x576 that gets stretched to 1024x576 on output). After Effects, Premiere and a few other apps send their pictures to this output directly by use of plugins and drivers. How to achieve this with blender is beyond me.

It could be achieved, however, using the method you suggest of extending the windows desktop to this screen (and yes windows (and linux) supports more than 2 screens) if I could specify which display blenderplayer sends to when in fullscreen mode. At the moment, it outputs to screen 1 and there appears to be no control over that.

As far as alpha is concerned, it’s going to be more complicated and probably more closely linked to the display hardware. I like your idea about using a 2d filter though.

So I guess my main question is this: on a multi display setup, how do you specify which screen blenderplayer outputs to when in fullscreen mode?

…so it’s not possible, then?