|
//nehe44课光晕
while(!viewer.done())
{
GLfloat t;
osg::Matrix proj,modl,mvp;
proj=viewer.getCamera()->getProjectionMatrix();//camera为场景主相机
modl=viewer.getCamera()->getViewMatrix();
mvp=modl*proj;
osg::Matrix currmar;
currmar(0,0)=mvp(3,0)-mvp(0,0);
currmar(0,1)=mvp(3,1)-mvp(0,1);
currmar(0,2)=mvp(3,2)-mvp(0,2);
currmar(0,3)=mvp(3,3)-mvp(0,3);
t = GLfloat(sqrt(currmar(0,0) * currmar(0,0) + currmar(0,1) * currmar(0,1) + currmar(0,2) * currmar(0,2) ));
currmar(0,0) /= t;
currmar(0,1) /= t;
currmar(0,2) /= t;
currmar(0,3) /= t;
//求下右,远近的其他几个面,
省略
。。。。。。。。。
//
if(PointinFrum(currmar))//如果在视口范围内
{
Messagebox(NULL,"","",nULL);
}
}
}
其中
//判断在0,0,0点模型是否在视口范围内
bool PointinFrumosg::Matrix mvp )
{
int i;
for(i = 0; i < 6; i++)
{
if(mvp(i,0) *0 + mvp(i,1) *0 + mvp(i,2) * 0+ mvp(i,3) <= 0)
{
return(FALSE);
}
}
return(TRUE);
}
//*************
我哪写的不对,为什么,我把模型移除视口了,还是弹出box;请各位帮忙看看。
有没有更好的解决办法。
//************* |
|