2.先熟悉设计模式,比如最常用的Visitor设计模式。要不然看不懂程序不说,而且更写不出程序。
3.窗体模式运行参考Example osgWindows,重点在于:
osg::ref_ptr
<
osg::GraphicsContext::Traits
>
traits
=
new
osg::GraphicsContext::Traits;
traits -> x = 640 ;
traits -> y = 0 ;
traits -> width = 640 ;
traits -> height = 480 ;
traits -> windowDecoration = true ;
traits -> doubleBuffer = true ;
traits -> sharedContext = 0 ;
osg::ref_ptr < osg::GraphicsContext > gc = osg::GraphicsContext::createGraphicsContext(traits. get ());
osg::ref_ptr < osg::Camera > camera = new osg::Camera;
camera -> setGraphicsContext(gc. get ());
camera -> setViewport( new osg::Viewport( 0 , 0 , traits -> width, traits -> height));
GLenum buffer = traits -> doubleBuffer ? GL_BACK : GL_FRONT;
camera -> setDrawBuffer(buffer);
camera -> setReadBuffer(buffer);
// add this slave camra to the viewer, with a shift right of the projection matrix
viewer.addSlave(camera. get (), osg::Matrixd::translate( - 1.0 , 0.0 , 0.0 ), osg::Matrixd());
traits -> x = 640 ;
traits -> y = 0 ;
traits -> width = 640 ;
traits -> height = 480 ;
traits -> windowDecoration = true ;
traits -> doubleBuffer = true ;
traits -> sharedContext = 0 ;
osg::ref_ptr < osg::GraphicsContext > gc = osg::GraphicsContext::createGraphicsContext(traits. get ());
osg::ref_ptr < osg::Camera > camera = new osg::Camera;
camera -> setGraphicsContext(gc. get ());
camera -> setViewport( new osg::Viewport( 0 , 0 , traits -> width, traits -> height));
GLenum buffer = traits -> doubleBuffer ? GL_BACK : GL_FRONT;
camera -> setDrawBuffer(buffer);
camera -> setReadBuffer(buffer);
// add this slave camra to the viewer, with a shift right of the projection matrix
viewer.addSlave(camera. get (), osg::Matrixd::translate( - 1.0 , 0.0 , 0.0 ), osg::Matrixd());
TODO:
1.3DS导入插件还不够完善,需要自己写。
2.更深入的了解OSG的机制。