2014-06-05 46 views

回答

1

由於您使用的是glTranslatef(),我認爲這必須是ES 1.1。更清潔和更通用的方法是使用glPushMatrix()glPopMatrix()來恢復原始轉換狀態,而不是自己應用反轉換。那麼你的的結構是這樣的:

glPushMatrix(); 
glTranslatef(...); 
// draw objects that need to be translated 
glPopMatrix(); 
// draw objects that should not be translated 

glPopMatrix()恢復轉換矩陣將它在glPushMatrix()調用之前的狀態。因此,在此代碼序列中,翻譯將不會應用於調用glPopMatrix()後繪製的對象。

您當然也可以首先繪製靜止物體,但仍然需要在幀的末尾恢復原始變形,以便爲下一幀做好準備。所以,如果你首先或最後繪製它並沒有太大的區別。

從你所描述的內容來看,我不太清楚「顫抖」是怎麼回事。由於我們正在處理有限的浮點精度,確實應用一個變換,然後再應用反變換,通常不會給你原來的變換。但是在應用了一些翻譯後,我不希望四捨五入誤差足夠大,導致明顯的視覺效果。

+0

謝謝,我會盡量使用這種方法。 「抖動」在某些物體出現在它應該出現的位置之前,在其他物體移動到的方向上有點難以捕捉到。彷彿它想要與其他人一起移動,並被拋回原來的位置。 – Simon

相關問題