Hi all,
i'm trying to setup an OpenSG application that displays one camera on one
computer and another independent camera on another.
My approach was to a use simple window die render the first camera on my main
application and to use a second window (MultiDisplayWindow) to render the
second camera on a different computer.
Rendering the first cam works as usual. But when I add the multidisplaywindow,
I get the following errors:
WARNING: Can't find container id:206 --> Once
WARNING: Viewport::render: no root! --> IN each render call at the cluster
server
The curious thing is that this worked a few weeks ago. :-(
Here's my code:
Client:
this->multiWindow = MultiDisplayWindow::create();
beginEditCP(this->multiWindow);
{
this->multiWindow->setConnectionType("Multicast");
this->multiWindow->getServers().push_back("multitouch");
}
endEditCP(this->multiWindow);
this->multiWindow->init();
NodePtr scene = ... // get from our main app
beaconTransform = ComponentTransform::create();
beaconNode = Node::create();
beginEditCP(beaconNode);
beaconNode->setCore(beaconTransform);
endEditCP(beaconNode);
beginEditCP( scene->getRoot() );
scene->addChild(beaconNode);
endEditCP( scene->getRoot() );
this->camera = OrthographicCamera::create();
beginEditCP(this->camera);
this->camera->setBeacon(beaconNode);
this->camera->setFar(1000);
this->camera->setNear(0);
this->camera->setVerticalSize(1000);
this->camera->setHorizontalSize(1000);
this->camera->setAspect(1.0f);
endEditCP(this->camera);
//this->viewport = Viewport::create();
ViewportPtr viewport = Viewport::create();
beginEditCP(viewport);
viewport->setSize(0.0f, 0.0f, 1.0f, 1.0f);
viewport->setCamera(this->camera);
if(scene)
{
viewport->setRoot(scene);
}
else
viewport->setRoot(NullFC);
viewport->setBackground(SolidBackground::create());
endEditCP(viewport);
beginEditCP(this->multiWindow);
this->multiWindow->addPort(viewport);
endEditCP(this->multiWindow);
Server:
ChangeList::setReadWriteDefault();
// init OpenSG
osgInit(argc, argv);
winid = glutCreateWindow(name);
if(fullscreen)
glutFullScreen();
glutDisplayFunc(display);
glutIdleFunc(display);
glutReshapeFunc(reshape);
glutSetCursor(GLUT_CURSOR_NONE);
glEnable( GL_LIGHTING );
glEnable( GL_LIGHT0 );
glEnable( GL_NORMALIZE );
// create the render action
ract=RenderAction::create();
ract->setSortTrans(true);
ract->setZWriteTrans(true);
ract->setLocalLights(true);
ract->setFrustumCulling(false);
ract->setStateSorting(true);
// setup the OpenSG Glut window
window = GLUTWindow::create();
window->setId(winid);
window->init();
// Init der Contrib.dll
CGFXMaterialPtr dummy = CGFXMaterial::create();
addRefCP(dummy);
subRefCP(dummy);
// create the cluster server
server = new ClusterServer(window,name,connectionType,address);
// start the server
server->start();
// enter glut main loop
glutMainLoop();
Thanks for your help,
Michael
P.S. I'm using OpenSG 1.8
--
Jetzt kostenlos herunterladen: Internet Explorer 8 und Mozilla Firefox 3.5 -
sicherer, schneller und einfacher! http://portal.gmx.net/de/go/chbrowser
------------------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev
_______________________________________________
Opensg-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensg-users