Multiple graphic-cards/devices

hello!



i want to use jme for interactive 3d environments (f.ex. user tracked by webcams, multiple videobeamers) so now i wonder what would be the best way to control my multiple beamers.

i had a look into the TestSpatialLookAt and the TestCameraMan, which both show something like "screen-in-screen" rendering. it's kinda hard to specify what i really want to do because i dont have a clue

how i could achieve it so i will just post a few questions which come to my mind.


  • imagine a setup where i have 2 or more graphiccards in my computer … is it possible to assign each cam/renderer (showing the same 3d-world) a own graphic device? would that be a sane thing to do (also in regards to  performance)?
  • there are graphic cards which offer multiple monitor outs which can be controlled by a sort of multiple desktop system. would it be possible to create a 3dworld (with the screen-in-screen rendering method) which spans

    all desktops so each "screen" shows one camera (resolution would be then 1600x1200 to span f.ex. 4 desktops with each 800x600 which would be the beamer resolution)? would that be better then the first approach?
  • does anyone know another approach which i didn't think of yet :slight_smile: ?



    thx in advance, sascha
- imagine a setup where i have 2 or more graphiccards in my computer .. is it possible to assign each cam/renderer (showing the same 3d-world) a own graphic device? would that be a sane thing to do (also in regards to  performance)?

Short answer is: not supported by any graphic cards and not supported in jme.
Long answer: If you have a setup with multiple graphics cards, drivers take care of deciding how those graphic cards work together. So this question should be adressed to video card manufacturers. Last I've checked, video drivers donot give you such an option. Two video cards either work together as one or only one of them works and another one simply takes up the slot. Even if drivers gave you such an option you would require to run TWO separate jme applications, one for each card (if lwjgl would let you choose what card to render to).

- there are graphic cards which offer multiple monitor outs which can be controlled by a sort of multiple desktop system. would it be possible to create a 3dworld (with the screen-in-screen rendering method) which spans
all desktops so each "screen" shows one camera (resolution would be then 1600x1200 to span f.ex. 4 desktops with each 800x600 which would be the beamer resolution)? would that be better then the first approach?

Technically you should be able to create very large rendering screen (window) that occupies multiple monitors. In this case, you can use texture renderers and monitor-size quads to logically divide your large rendering screen into smaller sub-screens. This really is the same method as rendering multiple subscreens on the same monitor, except you would want to somehow align the size of the subscreen with the size of each monitor.
Whether particular graphic card will let you create the large rendering screen that spans multiple monitors depends on the graphics hardware and drivers. Also keep in mind that the maximum resolution of the rendering screen is limited (limits depend on particular video card), so this method will not scale beyond that limit.
Due to different multi-screen capabilities of different video cards and varying limits for the maximum resolution of the rendering surface you application would only be portable among the group of video cards that support your requirements.

- does anyone know another approach which i didn't think of yet Smiley ?

If I wanted multiple monitors operating with multiple video cards to display the same world (more than 2 monitors, say 10 or 20), I would do the following:
setup many independent systems (computer with one video card and one monitor TIMES number of monitors required).
run jme application on each system.
synchronize them over a local network.

This way if you want more monitors displaying your world you just add more systems.

thx a lot :slight_smile:



that basically covers everything i wanted to know. really appreciate it!



regards, sascha

lex said:

- imagine a setup where i have 2 or more graphiccards in my computer .. is it possible to assign each cam/renderer (showing the same 3d-world) a own graphic device? would that be a sane thing to do (also in regards to  performance)?

not supported by any graphic cards

I'm not so sure about that. There are graphics cards with drivers which support being a "secondary device" - it must be explicitly supported, though.
Nontheless jME or even OpenGL might not support that...

i think i will try the third option … creating the same world on different machines … maybe i'll try to sync them with OSC … it's standard and should be fast enough (hopefully).

just out of interest … are there allready network enabled multiplayer games built with jme?



c, sascha

bitkid said:

just out of interest .. are there allready network enabled multiplayer games built with jme?

sure

MultiShufflePuck is a simple example. I even use the same library (CoObRA 2 - not related to jME) for rendering a scene on different machines.

Darkfrog wrote JGN for his networking needs, which also has a module for easy use with jME. This seems to get popular around here.
irrisor said:

Darkfrog wrote JGN for his networking needs, which also has a module for easy use with jME. This seems to get popular around here.


Popular only because Darkfrog brings it up at every opportunity he has :D (not to mention free advertisements from other members of the community.
duenez said:

irrisor said:

Darkfrog wrote JGN for his networking needs, which also has a module for easy use with jME. This seems to get popular around here.


Popular only because Darkfrog brings it up at every opportunity he has :D (not to mention free advertisements from other members of the community.


That's it...I'm stealing your lunch money!  :P