我剛剛開始使用OpenGL ES,我想要一個在我調用gltranslatef時不會移動的對象。我試着先渲染除了這個對象之外的所有東西,然後用與之前相同的值調用gltranslatef,但*( - 1)。這使對象保持原位,但似乎稍微顫抖。我所描述的甚至可能嗎?如何在Android上使用OpenGL ES在屏幕上顯示固定位置的對象?
0
A
回答
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()
後繪製的對象。
您當然也可以首先繪製靜止物體,但仍然需要在幀的末尾恢復原始變形,以便爲下一幀做好準備。所以,如果你首先或最後繪製它並沒有太大的區別。
從你所描述的內容來看,我不太清楚「顫抖」是怎麼回事。由於我們正在處理有限的浮點精度,確實應用一個變換,然後再應用反變換,通常不會給你原來的變換。但是在應用了一些翻譯後,我不希望四捨五入誤差足夠大,導致明顯的視覺效果。
相關問題
- 1. xna在固定屏幕座標上顯示3D對象爲2d
- 2. 如何在android中使用opengl es在屏幕上移動特定紋理?
- 3. 在屏幕上顯示一定數量的對象並定位
- 4. 如何在屏幕上的特定位置顯示MessageBox
- 5. 在鎖定的Android屏幕上顯示
- 6. 如何更改渲染對象放置在屏幕上的位置,OpenGL Es 2.0 iOS
- 7. 如何在全屏幕上顯示iPhone/iPad鍵盤OpenGL ES應用程序
- 8. 如何使用OpenGL和C#在屏幕上顯示文本#
- 9. 讓對象留在屏幕上OpenGL SFML
- 10. Android opengl es在真實設備上的白色屏幕
- 11. 在android上沒有屏幕閃爍的opengl es顏色選擇
- 12. 在Android屏幕的上半部分顯示當前位置
- 13. iOS 5屏幕上的對象位置
- 14. 如何選擇隨機對象在Adobe Flash中的固定位置上顯示
- 15. Android OpenGL-ES:對象顯示出錯Chirality
- 16. 如何在Android上爲OpenGl-ES 2.0設置8位紋理?
- 17. Android OpenGL在屏幕角落顯示對象
- 18. 如何在Android的佈局屏幕上放置對象?
- 19. CSS將元素保持在屏幕上的「固定」位置
- 20. DIV位置:固定的作品錯在小屏幕上
- 21. 在屏幕上顯示一定數量的對象
- 22. OpenGL ES - 如何將某個對象保持在固定大小?
- 23. 喚醒屏幕並在鎖定屏幕上顯示對話框
- 24. 在Android的屏幕上顯示距離
- 25. Android 4.0.3上不顯示OpenGL ES 2.0
- 26. 在屏幕上的特定位置imageView
- 27. 將屏幕座標轉換爲對象座標在Ipad上的OpenGL ES 2.0
- 28. 在Android上獲取主屏幕位置
- 29. 如何將圖像顯示在頁面上的固定位置
- 30. 使用WebGL或OpenGL ES 2,如何在屏幕上呈現RBO的內容?
謝謝,我會盡量使用這種方法。 「抖動」在某些物體出現在它應該出現的位置之前,在其他物體移動到的方向上有點難以捕捉到。彷彿它想要與其他人一起移動,並被拋回原來的位置。 – Simon