|
楼主 |
发表于 2009-6-10 03:30:53
|
显示全部楼层
这个看来成了不好解决的大问题了,
我想通过C语言里的时间函数改变风向的坐标参数来实现雪飘方向的渐变,可是编译通过后学的方向却一直不变的。
大概是运行到viewer.run();以后就不再接着运行了吧……
代码如下
#include "stdafx.h"
#include <iostream>
#include <string.h>
#include <time.h>
#include <algorithm>
#include <osgDB/ReadFile>
#include <osgViewer/Viewer>
#include <osgParticle/PrecipitationEffect>
#include <osg/Node>
float dir1;
float dir2;
float dir3;
void show()
{
osgViewer::Viewer viewer;
osg::ref_ptr<osgParticle:recipitationEffect> precipitationEffect = new osgParticle::PrecipitationEffect;
//precipitationEffect->setParticleSpeed( 40000) ;
precipitationEffect->snow(0.12);
precipitationEffect->setWind(osg::Vec3(dir1, dir2, dir3));
precipitationEffect->setParticleColor(osg::Vec4(1, 1, 1, 1));
precipitationEffect->setWind(osg::Vec3(dir1, dir2, dir3));
//precipitationEffect->setUseFarLineSegments(true);
osg::Group * root = new osg::Group() ;
root ->addChild(precipitationEffect.get ()) ;
root ->addChild(osgDB::readNodeFile("zl.osg")) ;
viewer.setSceneData(root);
viewer.realize();
viewer.run();
}
int main()
{
dir1=0;
dir2=0;
dir3=0;
int second = 0;
while(true)
{
time_t time_now = time(0);
struct tm *time_p = gmtime(&time_now);
if (time_p->tm_sec != second)
{
if (time_p->tm_sec % 3 == 0)
{
dir1=dir1+0.5;
cout<<"The current time is :"<<dir1<< endl;
second = time_p->tm_sec; //更新临时变量
}
}
}
}
现在可以肯定的是想通过C++里的传统语言来动态地改变运行中的场景是不行了。
可是timer还不知道怎么用。
话说那个API里的内容怎么理解呢? |
|