2017-04-10 120 views
2

我正在为我的openGL类的一个项目工作,该项目应该模仿Yo-Yo,我正在取得进展,但在检查屏幕边界时似乎遇到了障碍。我试图弄明白,一旦球到达屏幕的底部,它就会开始上升,反之亦然,并且非常感谢他们的帮助!OpenGL检查屏幕边界

我有三个静态花车声明上面要增加的功能,我试图检查德尔泰为了限制球的运动。

下面是我的功能转换球,球移动,但会继续上移过去,我已经设置

无效moveYoYo() {

glClear(GL_COLOR_BUFFER_BIT); 

//going up 
if(flag == 1) 
{ 
    deltay -= .05; 

    if(deltay <= -.002) 
    { 
     flag = 0; 

    } 

} 
//going down 
if(flag == 0) 
{ 
    deltay += .05; 

    if(deltay >= .002) 
    { 
     flag = 1; 

    } 

} 

glPushMatrix(); 
    glTranslatef(deltax,deltay,deltaz); 
    display(); 
glPopMatrix(); 
glFlush(); 
glutSwapBuffers(); 

}

回答

1

如果边界你希望这个球在屏幕的底部和顶部之间反弹,如果你想使用那些奇怪的数字,那么它改变方向的下界应该是< = -0.002和上限> = 1.002。反正好多了将使用更少的随机数,象f.e:

if (flag == 1) { 
    // Going down 
    deltay -= 0.05f; 
    if (deltay == 0) 
     flag = 0; 
} else if (flag == 0) { 
    // Going up 
    deltay += 0.05f; 
    if (deltay == 1) 
     flag = 1; 
} 

此外,如果只使用0或1,为什么不使用一个布尔标志?

+0

谢谢!我想通了,我只是使用奇怪的界限来看看我是否可以限制球。我的问题是忘记在代码中稍后交换缓冲区! –