我只想做一些簡單的動畫(例如在使用OpenGL的C++中)一些移動物體 - 讓我們說一個正方形從左到右的簡單水平移動。OpenGL - 簡單的水平移動物體的「超平滑」動畫
在OpenGL中,我可以使用「雙緩衝」的方法,讓我們假設一個用戶(運行我與動畫應用程序)打開了「垂直同步」 - 所以,當顯示器刷新本身我可以調用一些功能,每次(我可以使用Qt工具包及其功能「swapBuffers」來實現這一點)。因此,我認爲,我可以實現的「最平滑」的動畫是「每次監視器刷新時,將平方移動例如1個像素(可以是其他值)」,因此在每個「幀」處,方形進一步增加了1個像素 - 「我已測試過這款產品,而且它表現平穩。」
但是,當我想爲「遊戲邏輯」(將正方形向右移動1個像素)和「動畫」(顯示屏幕上正方形的當前位置)「分離」線程時出現問題。因爲我們假設遊戲邏輯線程是一個while循環,其中我將廣場移動1個像素,然後「休眠」線程一段時間,例如10毫秒,並且我的顯示器每16毫秒刷新一次 - 平方的移動「不會100%平滑」,因爲有時顯示器會刷新兩次,其中方塊只移動1個像素而不是2個像素(因爲顯示器和遊戲邏輯線程有兩個「不同」頻率) - 移動會看起來「小疙瘩」。因此,邏輯上,我可以使用第一種超級平滑方法,但是它不能用於例如「多人遊戲」(例如「服務器 - 客戶端」)遊戲 - 因爲不同的計算機具有不同的監視頻率(所以我應該爲遊戲邏輯(在服務器上)和動畫(在客戶端上)使用不同的線程)。
所以我的問題是: 有一些方法,使用遊戲邏輯和動畫不同的線程,從而做一些運動物體的「100%流暢」的動畫,如果一些存在,請在這裏形容它,或當我只是有一些「更復雜的場景渲染」,我只是不會看到我現在看到的「小動作」,當我沿着水平方向移動一個簡單的方塊時,我會深深地關注它:)?
所以總而言之,你說我無法在多人遊戲中實現「完美的光滑效果」? – 2012-02-22 22:49:57
取消我的回答:) – 2012-02-23 08:14:08
好的非常感謝你。你已經打勾:) – 2012-02-23 09:12:11