|
楼主 |
发表于 2010-10-4 17:03:33
|
显示全部楼层
int main( int argc, char **argv )
{
osgViewer::Viewer viewer;
osg::Group* pRoot = new osg::Group;
viewer.setCameraManipulator(new osgGA::TrackballManipulator());
viewer.setSceneData(pRoot);
osgWidget::WindowManager* pMgr=new osgWidget::WindowManager(&viewer,1024.f,768.f,MASK_2D,osgWidget::WindowManager::WM_USE_RENDERBINS);
CreateExample(viewer, pMgr, pRoot);
osg::Geode* pGeode=new osg::Geode;
pRoot->addChild(pGeode);
pGeode->addDrawable(createPlane(5,5));
osg::StateSet* stateset = pGeode->getOrCreateStateSet();
osg::Shader* vertexShader = new osg::Shader( osg::Shader::VERTEX );
osg::Shader* fragmentShader = new osg::Shader( osg::Shader::FRAGMENT );
vertexShader->loadShaderSourceFromFile("shaders/temp.vert");
fragmentShader->loadShaderSourceFromFile("shaders/temp.frag");
// loadShaderSource(vertexShader,"shaders\temp.vert");
//loadShaderSource(fragmentShader,"shaders\temp.frag");
osg:rogram* program = new osg::Program;
program->addShader( vertexShader );
program->addShader( fragmentShader );
stateset->setAttributeAndModes( program, osg::StateAttribute::ON );
float time=0.0;
osg::Uniform* param = new osg::Uniform("Time", time );
stateset->addUniform( param );
osg::Uniform* param0 = new osg::Uniform( "texMap", 0 );
stateset->addUniform( param0 );
//BindTexture("tex1.jpg",stateset,0);
BindTexture("Images/skymap.jpg",stateset,0);
osg::Uniform* param1 = new osg::Uniform( "mixMap", 1 );
stateset->addUniform( param1 );
//BindTexture("texture.png",stateset,1);
BindTexture("Images/blueFlowers.png",stateset,1);
while( !viewer.done() )
{
time+=0.0002;
param->set(time);
viewer.frame();
}
return 0;
} |
|