【问题标题】:OpenGL checking screen boundariesOpenGL 检查屏幕边界
【发布时间】:2017-04-10 21:21:39
【问题描述】:

我正在为我的 openGL 类开发一个项目,该项目应该模拟 Yo-Yo,我正在取得进展,但在检查屏幕边界时我似乎遇到了障碍。我正在努力让它一旦到达屏幕底部,它就会开始上升,反之亦然,我们将不胜感激!

我在上面声明了三个静态浮点数,它们将由函数递增,我正在尝试检查 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();

}

【问题讨论】:

    标签: c++ opengl translation


    【解决方案1】:

    如果你想让球在屏幕底部和顶部之间反弹,它改变方向的下限应该是 = 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 为什么不使用布尔值?

    【讨论】:

    • 谢谢!!!我想通了,我只是在使用奇怪的边界来看看我是否可以限制球。我的问题是忘记在代码后面交换缓冲区!
    猜你喜欢
    • 1970-01-01
    • 2014-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-11
    • 2017-02-25
    • 1970-01-01
    相关资源
    最近更新 更多