2010-09-16 114 views
0

如何在opengl中移動2D對象?什麼是機制,例如,我們需要控制幀還是什麼?如何在OpenGL中做2D動畫?

一些代碼段歡迎:)

在此先感謝!

+0

取決於你需要什麼類型的動畫 - 我會考慮將簡單的移動對象作爲轉換矢量,其中每個元素存儲相應幀的轉換,並且您需要的只是將其乘以適當的ProjectionModelviewMatrix。如果您想要獲得比簡單移動物體更高的效果,您可以隨時更改每幀動畫的紋理:您只需處理稱爲精靈片的事物,而不是每個頂點改變紋理座標的變換。 – erjot 2010-09-16 09:09:15

回答

0

簡而言之,您可以通過修改模型視圖矩陣來移動對象。這可以通過幾種方式來完成,這取決於您的編碼偏好以及您可用的opengl驅動程序版本。

這裏的一些部分代碼,讓你在正確的方向開始:

以下是在OpenGL棄用3.0+(但即便如此,它仍然是通過相容性分佈可用)。

// you'll need a game loop to make some opengl calls each frame 
while(!done) 
{ 
    // clear color buffers, depth buffers, etc 
    initOpenglFrame(); 

    glPushMatrixf(); 
     glTranslatef(obj->getX(), obj->getY(), obj->getZ()); 
     obj->draw(); 
    glPopMatrixf(); 

    // move the object 0.01 units to the left each tick 
    obj->setX(obj->getX() + 0.01); 

    // flush, swap buffers, etc 
    finishOpenglFrame(); 
} 

對於OpenGL 3.0的超越,glPushMatrixf(),glPopMatrixf(),glTranslatef()函數,以及類似的固定管線接口所有棄用。如果你需要使用OpenGL3.0或更高版本,你會想要做同樣類型的解決方案,但是你需要自己實現矩陣和矩陣堆棧。我認爲這個討論超出了你的問題的範圍。

爲了進一步閱讀,並開始使用OpenGL,我建議你看看nehe.gamedev.net。如果您想開始使用OpenGL 3.X,那麼我建議您購買Opengl Superbible 5th Edition。好書!

0

OpenGL只是通過頂點數據通過一些變換矩陣和柵格化結果。比你必須提供的更高的水平。