在我的Android應用程序中,我使用GLSurfaceView來繪製3D對象,就像一個盒子對象。我通過使用OpenGL ES API來翻譯該對象。在動畫過程中的某一時刻,對象將從可見視口窗口中消失。此時,我必須從正在繪製的其他對象的集合中刪除此對象。我如何檢測到對象已經離開視圖?短碼示例將不勝感激。如何檢測對象是否已移出OpenGL ES中的可見窗口?
0
A
回答
1
Here is a frustum class for android,代碼從here的端口。它允許您從OpenGL中提取截錐參數,然後測試包含在視圖體積中的各種幾何圖元(點,球體,軸對齊的長方體)。
兩件事看出來:
- 在update()方法的應-是冗餘的錯誤處理代碼。有關此故事,請參見here。看起來像是一隻海森貓。
- extractFromOGL()使用glGetFloat - 此方法未在PixelFlinger軟件渲染器中實現。如果您針對真正的低端設備或使用模擬器,則必須自己計算投影和模型視圖矩陣,並手動調用update()。
1
你在找什麼叫做viewing frustum culling。
的視錐是體積可見 到所述虛擬相機的幾何 表示。當然, 本卷以外的對象在最終圖像中不會顯示爲 ,因此它們將被丟棄。通常情況下,物體位於觀看平截頭體的邊界上。 這些對象沿着這個邊界在 被稱爲剪裁的過程中被切割成片段 ,並且 位於截錐體之外的片斷被丟棄 ,因爲沒有地方繪製它們。
發表了幾篇教程:
http://www.lighthouse3d.com/opengl/viewfrustum/
http://www.crownandcutlass.com/features/technicaldetails/frustum.html
相關問題
- 1. 檢測窗口是否可見
- 2. 檢測OpenGl ES 2.0是否可用
- 3. 檢測是否格是在瀏覽器窗口中可見
- 4. 檢測窗口是否是可可中的關鍵窗口
- 5. 如何檢測SWT對話框是否已打開並可見?
- 6. 移動對象Opengl Es 2.0
- 7. 檢查窗口標題是否可見
- 8. 檢測div是否在瀏覽器窗口中不可見
- 9. 如何檢測bootstrap彈出窗口上的單擊對象是否打開?
- 10. OpenGL ES可點擊對象
- 11. 在OpenGL ES for iOS中移動對象?
- 12. 是否可以檢查iPhone上的OpenGL ES紋理是否已真正釋放?
- 13. 如何檢測mediacontroller是否可見?
- 14. 如何檢測我的窗口在彈出窗口中是否打開
- 15. 如何檢測窗口是否閃爍
- 16. 如何檢查窗口在Windows窗體中是否真的可見?
- 17. 檢測可用的OpenGL ES版本
- 18. 如何在現代多顯示器系統上檢測窗口是否可見
- 19. 如何檢測Android應用程序中的OpenGL ES中的對象的點擊?
- 20. 如何檢測面板是否在可視窗口中?
- 21. 如何檢測鼠標是否落在可可窗口之外?
- 22. 是否可以使用OpenGL ES 2.0繪製多個對象
- 23. 如何檢測加載的ORM對象是否已更改?
- 24. 檢測是否DojoX中移動的ToolBarButton可見
- 25. 檢測Outlook檢查器窗口是否已關閉
- 26. 我如何檢測彈出窗口是否被阻塞在鉻
- 27. 檢查div是否在窗口中可見?
- 28. 檢查整個div是否在瀏覽器窗口中可見
- 29. 如何檢測窗口是否可以顯示?
- 30. 如何使用Nhibernate檢測對象是否已更新?
我正在尋找OpenGL ES Api,就像給定一個對象幾何體一樣,它會測試該對象是否在視口窗口之外,然後返回測試結果。 – ace 2011-02-07 18:54:46
在OpenGL ES中沒有API。正如我在上面指出的那樣,您需要實施平截頭體剔除。 – 2011-02-07 19:29:36