Hi one reason for binary files to be huge is embedded media like textures, as they are stored as uncompressed data. you can use binary formats with external image files (pngs \ jpegs) in this case to cut down file size. you can use osgconv with various options to sort htis out, check "osgconv --format IVE" to see ive readerwriter options.
Cheers. 19.09.2012, 10:44, "Koduri Lakshmi" <[email protected]>: > Hi robertosfield and hybr, > > Thanks a lot for the nice help. > > My develop environment is windows XP 32 bit with SP3. On 32 bit machines the > code works well. > > When I run on Win - 7 Ultimate 64 bit then I am getting run time error some > times. I dont have development environment on 64 bit machine. I don't know > how to provide stack trace on this testing machine. > > I modified my code such that the thread has only reading statement. I want to > run all threads simultaneously (so reading will be fast). I dont want sysnc > of threads. > > Here is my modified code. > > Code: > //Globles > > struct ModelObj > { > int id; > }; > ModelObj obj[NUM_OF_MODELS]; > > Model model;//OBJ OF MODEL HANDLING CLASS > > HANDLE T[NUM_OF_MODELS]; > CWinThread *pThread[NUM_OF_MODELS]; > > UINT ThreadProc1(LPVOID lpvoid) > { > ModelObj *temp = (ModelObj*)lpvoid; > > //model.mtForMarker[temp->id] = new osg::MatrixTransform; > //model.modelSwitch->addChild(model.mtForMarker[temp->id].get()); > > model.modelForMarker[temp->id] = > osgDB::readNodeFile(model.fileNames[temp->id]); > > if(model.modelForMarker[temp->id]) > { > model.mtForMarker[temp->id]->addChild(model.modelForMarker[temp->id].get()); > > //model.mtForMarker[temp->id]->addChild(model.sound_root.get()); > // model.mtForMarker[temp->id]->setUpdateCallback( > model.soundCB.get() ); > } > > return 0; > } > > In main > > Code: > Code: > ......... > > for(int i=0;i<NUM_OF_MODELS;i++) > { > obj[i].id=i; > > } > > strcpy(model.fileNames[0],"osg_01.osg"); > strcpy(model.fileNames[1],"osg_02.OSG"); > strcpy(model.fileNames[2],"osg_03.OSG"); > > DWORD ThreadId[NUM_OF_MODELS]; > for(int i=0;i<NUM_OF_MODELS;i++) > { > model.mtForMarker[i] = new osg::MatrixTransform; > model.modelSwitch->addChild(model.mtForMarker[i].get()); > > model.mtForMarker[i]->addChild(model.sound_root.get()); > model.mtForMarker[i]->setUpdateCallback( > model.soundCB.get() ); > > //pThread[i]=new CWinThread; > std::cout<<"Thread: "<<i<<std::endl; > pThread[i] = AfxBeginThread (ThreadProc1, > (LPVOID)&obj[i]); > > pThread[i]->m_bAutoDelete=FALSE; > > } > > for (int j = 0; j < NUM_OF_MODELS; j ++) > { > T[j] = pThread[j]->m_hThread; > } > > ::WaitForMultipleObjects(NUM_OF_MODELS, T, TRUE, > INFINITE); > > for (int j = 0; j < NUM_OF_MODELS; j ++) > { > delete pThread[j]; > } > > Once I tried to use binary formats. But when compared to OSG files its size > is huge. So I stopped. I will try once again. (I am changing textures > dynamically. Is it possible with binary formats?) > > Can you please guide me how to solve this problem? > > ... > > Thank you! > > Cheers, > Koduri > > ------------------ > Read this topic online here: > http://forum.openscenegraph.org/viewtopic.php?p=50181#50181 > > _______________________________________________ > osg-users mailing list > [email protected] > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org _______________________________________________ osg-users mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

