OpenGL检查屏幕边界

时间:2017-04-10 21:21:39

标签: c++ opengl translation

我正在为我的openGL课程开发一个应该模仿溜溜球的项目,我正在取得进展,但在检查屏幕边界时似乎遇到了障碍。我试图得到它,以便一旦球到达屏幕的底部,它开始上升,反之亦然,并且非常感谢帮助!

我有三个上面声明的静态浮点数将由函数递增,我试图检查deltay以限制球的移动。

下面是我的翻转球的功能,球移动但会继续移动超过我设定的边界

void 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 :(得分:1)

如果你希望那个球在屏幕的底部和顶部之间反弹,那么它改变方向的下限应该是&lt; = -0.002而上限&gt; = 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,为什么不使用bool?