2017-04-10 168 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

謝謝!我想通了,我只是使用奇怪的界限來看看我是否可以限制球。我的問題是忘記在代碼中稍後交換緩衝區! –