// redraw the window void display(void) { // redraw the client window _mgr->redraw(); OSG::commitChanges(); try { if(_cluster_win != NULL) { OSG::Thread::getCurrentChangeList()->dump(); // redraw the server windows _cluster_win->render((OSG::RenderAction *) _mgr->getRenderAction()); } } catch(OSG_STDEXCEPTION_NAMESPACE::exception &e) { //printf("error: '%s'\n", e.what()); printf("ClusterServer was killed!\n"); _cluster_win = NULL; } OSG::commitChanges(); OSG::clearChangeList(); }
// // redraw the window // void display(void) { // render mgr->redraw(); // all done, swap glutSwapBuffers(); }
// redraw the window void display(void) { // render mgr->redraw(); // all done, swap (better not GV) //glutSwapBuffers(); }
// redraw the window void display(void) { OSG::Real64 t = OSG::getSystemTime(); // render scene _mgr->redraw(); t = OSG::getSystemTime() - t; if(t > 0.0) printf("fps: %f\r", 1.0f / OSG::Real32(t)); else printf("fps: very fast ...\r"); }
// redraw the window void display( void ) { // create the matrix OSG::Matrix m; OSG::Real32 t = glutGet(GLUT_ELAPSED_TIME ); m.setTransform(OSG::Quaternion(OSG::Vec3f(0,1,0), t / 1000.f)); // set the transform's matrix trans->setMatrix(m); OSG::commitChanges(); mgr->redraw(); }
// redraw the window void display(void) { // std::cout << ">> FRAME START" << std::endl; static OSG::Time tAcc = 0; static OSG::UInt32 fc = 0; OSG::Time t0 = OSG::getSystemTime(); OSG::FrameHandler::the()->frame(); OSG::commitChangesAndClear(); mgr->idle(); mgr->redraw(); OSG::Time t1 = OSG::getSystemTime(); tAcc += (t1 - t0); fc += 1; if(tAcc >= 1) { std::cout << "frame count [" << fc << "] fc/tAcc [" << (fc/tAcc) << "] tAcc/fc [" << (1000.f * (tAcc/fc)) << "] ms tAcc [" << tAcc << "] s" << std::endl; tAcc = 0; fc = 0; } // std::cout << "<< FRAME END" << std::endl; // mgr->getWindow()->registerConstant(GL_MAX_VERTEX_UNIFORM_COMPONENTS ); // mgr->getWindow()->registerConstant(GL_MAX_FRAGMENT_UNIFORM_COMPONENTS); // OSG::Real32 maxVPUniforms = // mgr->getWindow()->getConstantValue(GL_MAX_VERTEX_UNIFORM_COMPONENTS); // OSG::Real32 maxFPUniforms = // mgr->getWindow()->getConstantValue(GL_MAX_FRAGMENT_UNIFORM_COMPONENTS); // std::cout << "GL_MAX_VERTEX_UNIFORM_COMPONENTS [" << maxVPUniforms // << "] GL_MAX_FRAGMENT_UNIFORM_COMPONENTS [" << maxFPUniforms // << "]" << std::endl; }
// redraw the window void display( void ) { // create the matrix OSG::Real32 t = glutGet(GLUT_ELAPSED_TIME ); // stagger the lights in time, so that they follow each other for(OSG::UInt16 i = 0; i < nlights; ++i) { OSG::Matrix m; makeMatrix(t - 2000 * i, m); lightBeacons[i]->setMatrix(m); } OSG::commitChanges(); mgr->redraw(); }
// // redraw the window // void display(void) { // create the matrix OSG::Matrix m; OSG::Real32 t = glutGet(GLUT_ELAPSED_TIME ); // set the transforms' matrices m.setTransform(OSG::Vec3f(0, 0, OSG::osgSin(t / 1000.f) * 1.5), OSG::Quaternion( OSG::Vec3f (1, 0, 0), t / 500.f)); cyltrans->setMatrix(m); m.setTransform(OSG::Vec3f(OSG::osgSin(t / 1000.f), 0, 0), OSG::Quaternion( OSG::Vec3f (0, 0, 1), t / 1000.f)); tortrans->setMatrix(m); OSG::commitChanges(); mgr->redraw(); }
// redraw the window void display( void ) { // update the geometry OSG::Matrix m; OSG::Real32 t = glutGet(GLUT_ELAPSED_TIME ); m.setTransform(OSG::Vec3f(OSG::osgSin(t / 1000.f), OSG::osgCos(t / 1000.f), OSG::osgSin(t / 1000.f)), OSG::Quaternion( OSG::Vec3f(0,1,0), t / 1000.f)); trans->setMatrix(m); // update the image grabImage(image); // redraw the screen mgr->redraw(); }
// // redraw the window // void display(void) { // light spot direction and light position must be provided in eye space update_light_state(ubo_light_state, lights); // create the matrix OSG::Matrix m; OSG::Real32 t = glutGet(GLUT_ELAPSED_TIME ); // set the transforms' matrices m.setTransform(OSG::Vec3f(0, 0, OSG::osgSin(t / 1000.f) * 1.5), OSG::Quaternion( OSG::Vec3f (1, 0, 0), t / 500.f)); cyltrans->setMatrix(m); m.setTransform(OSG::Vec3f(OSG::osgSin(t / 1000.f), 0, 0), OSG::Quaternion( OSG::Vec3f (0, 0, 1), t / 1000.f)); tortrans->setMatrix(m); OSG::commitChanges(); mgr->redraw(); }
// redraw the window void display(void) { static OSG::Real32 speed = 10000.0f; static OSG::Real32 t = glutGet(GLUT_ELAPSED_TIME); static OSG::Real32 t2 = 0.0; OSG::Real32 td = glutGet(GLUT_ELAPSED_TIME) - t; if(td > speed) t = glutGet(GLUT_ELAPSED_TIME); if(_animation) { t2 = (2 * OSG::Pi / speed) * td; _shl_vp->updateUniformVariable("cos_time_0_2PI", OSG::osgCos(t2)); _shl_vp->updateUniformVariable("sin_time_0_2PI", OSG::osgSin(t2)); } OSG::Thread::getCurrentChangeList()->commitChanges(); // render scene _mgr->redraw(); }
void display(void) { mgr->redraw(); }
// redraw the window void display(void) { mgr->idle(); mgr->redraw(); }
// redraw the window void display(void) { // render scene _mgr->redraw(); }
int doMain(int argc, char **argv) { // // This might be necessary depending on the // used platform to ensure that the corresponding // libraries get loaded. // OSG::preloadSharedObject("OSGFileIO"); OSG::preloadSharedObject("OSGImageFileIO"); OSG::preloadSharedObject("OSGContribPLY"); OSG::osgInit(argc,argv); // GLUT init glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_STENCIL | GLUT_DOUBLE); glutCreateWindow("OpenSG"); glutReshapeFunc(reshape); glutDisplayFunc(display); glutIdleFunc(display); glutMouseFunc(mouse); glutMotionFunc(motion); glutKeyboardFunc(keyboard); OSG::PassiveWindowRefPtr pwin=OSG::PassiveWindow::create(); pwin->init(); // create the SimpleSceneManager helper mgr = OSG::SimpleSceneManager::create(); // create the window and initial camera/viewport mgr->setWindow(pwin); // // for storing clipplane beacon we use a container // collection attachment which we attach to the scene // node. Otherwise the scene could not be saved correctly, // as the beacons would be lost. // container = OSG::ContainerCollection::create(); // // Implementation details: // For each clip plane we provide a ClipPlaneChunk, the plane geometry, // the plane transform core and at least a plane color conveniently in // a vector of type VecClipPlaneDetailsT. The next function call // initializes this data structure. // createClipPlaneDetails(); // // The scene // scene = OSG::Node::create(); scene->setCore(OSG::Group::create()); scene->addAttachment(container); // // A place for accessing the box and torus. // vecGeometries.push_back(NULL); vecGeometries.push_back(NULL); // // Build concrete clipping planes and update the clip plane details. // ClipPlaneData data1; ClipPlaneData data2; data1._equation = OSG::Vec4f(0,0,1,0); data1._enabled = true; data2._equation = OSG::Vec4f(1,0,0,0); data2._enabled = false; vecClipPlaneData.push_back(data1); vecClipPlaneData.push_back(data2); updateClipPlanes(vecClipPlaneData); keyboard('3',-1,-1); keyboard('4',-1,-1); // tell the manager what to manage mgr->setRoot(scene); // show the whole scene mgr->showAll(); mgr->redraw(); pwin->dumpExtensions(); return 0; }
// redraw the window void display(void) { if(glutGetWindow() == mainwinid) { #ifdef OSG_WITH_NVPERFSDK if(nvDataProvider->nCounters()) { nvDataProvider->sample(); OSG::Char8 str[40]; for(int i = 0; nvStatElems[i] != NULL; ++i) { if(collector != NULL) { sprintf(str, "%s: %f", nvStatElems[i]->getDescription().c_str(), nvDataProvider->value(i)); OSG::StatStringElem *e = dynamic_cast<OSG::StatStringElem*>( collector->getElem(*nvStatElems[i])); e->set(str); } } } if(runExperiment) { int nCount; const char *expCounters[] = { "2D Bottleneck", "2D SOL", "IDX Bottleneck", "IDX SOL", "GEOM Bottleneck", "GEOM SOL", "ZCULL Bottleneck", "ZCULL SOL", "TEX Bottleneck", "TEX SOL", "ROP Bottleneck", "ROP SOL", "SHD Bottleneck", "SHD SOL", "FB Bottleneck", "FB SOL", "GPU Bottleneck", // Needs to be last NULL }; for(int i = 0; expCounters[i] != NULL; ++i) { NVPMAddCounterByName(const_cast<char *>(expCounters[i])); } NVPMBeginExperiment(&nCount); FLOG(("NVPerfKitSDK: Running %d passes\n", nCount)); for(int i = 0; i < nCount; i++) { NVPMBeginPass(i); mgr->redraw(); NVPMEndPass(i); } NVPMEndExperiment(); UINT64 value, cycles; for(int i = 0; expCounters[i] != NULL; ++i) { NVPMGetCounterValueByName(const_cast<char *>(expCounters[i]), 0, &value, &cycles); FLOG(("%s: %lld value, %lld cycles (%.4f%%)\n", expCounters[i], value, cycles, value * 100. / cycles)); } char buffer[1000] = ""; NVPMGetGPUBottleneckName(value, buffer); FLOG(("GPU Bottleneck: '%s'\n", buffer)); for(int i = 0; expCounters[i] != NULL; ++i) { //NVPMRemoveCounterByName(expCounters[i]); } runExperiment = false; } #endif mgr->redraw(); } else if(glutGetWindow() == debugwinid) { // Use RenderAction to prevent new occlusion culling on debug output debugwin->render(debugact); } }
// redraw the window void display(void) { g_mgr->idle(); g_mgr->redraw(); OSG::Thread::getCurrentChangeList()->clear(); }
void Animate() { //Show FPS //showFpsCounter(); if(bAnim == true) { static OSG::Real64 t0 = OSG::getSystemTime(); OSG::Real64 t = OSG::getSystemTime() - t0; OSG::Real32 rot0 = t * 0.25; if(rot0 > 360.0) rot0 -= 360.0; OSG::Real32 rota = t * 0.5; if(rota > 360.0) rota -= 360.0; OSG::Real32 rotb = t * 1.0; if(rotb > 360.0) rotb -= 360.0; OSG::Real32 rotc = t * 1.5; if(rotc > 360.0) rotc -= 360.0; OSG::Real32 rotd = t * 2.0; if(rotd > 360.0) rotd -= 360.0; // _light2_trans->editMatrix().setTranslate(-100.0*sin(rota),-100.0*cos(rota), 250.0); //animate Trees OSG::Quaternion q; q.setValueAsAxisRad(1, 1, 1, 0.5 * sin(rota)); _tree1_trans->editMatrix().setRotate(q); _tree1_trans->editMatrix().setScale(OSG::Vec3f(12.0, 12.0, 10.0)); q.setIdentity(); q.setValueAsAxisRad(1, 1, 1, 0.5 * sin(rotc)); _tree2_trans->editMatrix().setRotate(q); _tree2_trans->editMatrix().setScale(OSG::Vec3f(12.0, 12.0, 10.0)); q.setIdentity(); q.setValueAsAxisRad(1, 1, 1, 0.5 * sin(rotb)); _tree3_trans->editMatrix().setRotate(q); _tree3_trans->editMatrix().setScale(OSG::Vec3f(12.0, 12.0, 10.0)); q.setIdentity(); q.setValueAsAxisRad(1, 1, 1, 0.5 * sin(rotb)); _tree4_trans->editMatrix().setRotate(q); _tree4_trans->editMatrix().setScale(OSG::Vec3f(12.0, 12.0, 10.0)); q.setIdentity(); q.setValueAsAxisRad(1, 1, 1, 0.5 * sin(rotc)); _tree5_trans->editMatrix().setRotate(q); _tree5_trans->editMatrix().setScale(OSG::Vec3f(12.0, 12.0, 10.0)); q.setIdentity(); q.setValueAsAxisRad(1, 1, 1, 0.5 * sin(rotb)); _tree6_trans->editMatrix().setRotate(q); _tree6_trans->editMatrix().setScale(OSG::Vec3f(12.0, 12.0, 10.0)); q.setIdentity(); q.setValueAsAxisRad(1, 1, 1, 0.5 * sin(rotd)); _tree7_trans->editMatrix().setRotate(q); _tree7_trans->editMatrix().setScale(OSG::Vec3f(12.0, 12.0, 10.0)); q.setIdentity(); q.setValueAsAxisRad(1, 1, 1, 0.5 * sin(rotb)); _tree8_trans->editMatrix().setRotate(q); _tree8_trans->editMatrix().setScale(OSG::Vec3f(12.0, 12.0, 10.0)); q.setIdentity(); q.setValueAsAxisRad(1, 1, 1, 0.5 * sin(rotc)); _tree9_trans->editMatrix().setRotate(q); _tree9_trans->editMatrix().setScale(OSG::Vec3f(12.0, 12.0, 10.0)); q.setIdentity(); { OSG::Matrix m; m.setIdentity(); OSG::Vec3f scale(0.15f,0.15f,0.15f); OSG::Vec3f trans(-40.0 * sin(rotb),-40.0 * cos(rotb), 50.0 + 25.0 * sin(rotd)); q.setValueAsAxisRad(0, 0, 1, -rotb); m.setTransform(trans, q, scale); _obj1_trans->setMatrix(m); } // { // _light2_trans->editMatrix().setTranslate(-40.0 * sin(rotb), -40.0 * // cos(rotb), // 50.0 + 25.0 * sin(rotd)); // } //animate Dinos { OSG::Matrix m; m.setIdentity(); OSG::Vec3f scale(5.0,5.0,5.0); OSG::Real32 ztrans1 = sin(2.0 * rotd); if(ztrans1 < 0) ztrans1 *= -1.0; OSG::Vec3f trans(-96.0 * cos(rot0),-96.0 * sin(rot0), 10.0 + 8.0 * ztrans1); m.setScale(OSG::Vec3f(5.0, 5.0, 5.0)); q.setValueAsAxisRad(0, 0, 1, rot0 - 170); m.setTransform(trans, q, scale); _dino1_trans->setMatrix(m); } { OSG::Matrix m; m.setIdentity(); OSG::Vec3f scale(3.0,3.0,3.0); OSG::Real32 ztrans1 = sin(2.5 * rotd); if(ztrans1 < 0) ztrans1 *= -1.0; OSG::Vec3f trans(-96.0 * cos((rot0 - 0.5)),-96.0 * sin((rot0 - 0.5)), 6.0 + 8.0 * ztrans1); m.setScale(OSG::Vec3f(5.0, 5.0, 5.0)); q.setValueAsAxisRad(0, 0, 1, rot0 - 169.9); m.setTransform(trans, q, scale); _dino2_trans->setMatrix(m); } { OSG::Matrix m; m.setIdentity(); OSG::Vec3f scale(3.0,3.0,3.0); OSG::Real32 ztrans1 = sin(3.0 * rotd); if(ztrans1 < 0) ztrans1 *= -1.0; OSG::Vec3f trans(-96.0 * cos((rot0 - 0.8)),-96.0 * sin((rot0 - 0.8)), 6.0 + 8.0 * ztrans1); m.setScale(OSG::Vec3f(5.0, 5.0, 5.0)); q.setValueAsAxisRad(0, 0, 1, rot0 - 170.1); m.setTransform(trans, q, scale); _dino3_trans->setMatrix(m); } { OSG::Matrix m; m.setIdentity(); OSG::Vec3f scale(3.0,3.0,3.0); OSG::Real32 ztrans1 = sin(2.75 * rotd); if(ztrans1 < 0) ztrans1 *= -1.0; OSG::Vec3f trans(-96.0 * cos((rot0 - 1.2)),-96.0 * sin((rot0 - 1.2)), 6.0 + 8.0 * ztrans1); m.setScale(OSG::Vec3f(5.0, 5.0, 5.0)); q.setValueAsAxisRad(0, 0, 1, rot0 - 170.1); m.setTransform(trans, q, scale); _dino4_trans->setMatrix(m); } } _navigator.idle(_mousebuttons, _lastx, _lasty); mgr->redraw(); }
// redraw the window void display(void) { _navigator.updateCameraTransformation(); mgr->redraw(); }
int main(int argc, char **argv) { g_error = 0.01f; if ( argc > 1 && !strcmp(argv[1], "-f")) { std::cerr << "Using forceTesselate()." << std::endl; useForceTesselate = true; ++argv, --argc; } if ( argc == 2 ) { g_error = atof( argv[1] ); } if ( g_error < 0.001 ) { g_error = 0.001f; } OSG::osgInit(argc,argv); // GLUT init glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE); int winid = glutCreateWindow("OpenSG"); glutReshapeFunc(reshape); glutDisplayFunc(display); glutIdleFunc(display); glutMouseFunc(mouse); glutMotionFunc(motion); glutKeyboardFunc(keyboard); { OSG::GLUTWindowRefPtr gwin = OSG::GLUTWindow::create(); gwin->setGlutId(winid); gwin->init(); // create the scene OSG::NodeRefPtr scene; scene = makeScene( ); if ( scene == NULL ) { std::cerr<<"makeScene returned NullFC, exiting..."<<std::endl; return -1; } // create the SimpleSceneManager helper mgr = OSG::SimpleSceneManager::create(); // create the window and initial camera/viewport mgr->setWindow( gwin ); // tell the manager what to manage mgr->setRoot ( scene ); // show the whole scene mgr->showAll(); mgr->redraw(); OSG::SolidBackgroundRefPtr bgr = OSG::SolidBackground::create(); bgr->setColor( OSG::Color3f( 0.7f, 0.7f, 0.7f )); mgr->getWindow()->getPort(0)->setBackground( bgr ); } // GLUT main loop glutMainLoop(); return 0; }