我有建立在OpenGL中的地圖對象。這張地圖包含街道,高速公路,邊界。我想要的是知道用戶觸摸什麼對象,就像多邊形或折線或簡單的線。我如何從OpenGL中檢測這些對象?OpenGL的檢測用戶觸摸
回答
在OpenGL ES中,沒有selection buffer
,因此沒有特別設計的功能可以讓您在特定點上識別屏幕上的對象。
你有兩個選擇:
UnProject屏幕空間位置(X,Y)成爲世界空間中的位置,並通過這一點(通常測試針對射線散粒相交的所有對象表現最好的方法)。
呈現在使用一種特殊的顏色,唯一識別場景的一切,然後在屏幕空間位置(x,y)的讀取像素的顏色。
選項2慢,因爲它需要你等待GPU完成渲染,但它具有處理非常薄的對象(如線)的優勢,更準確。實施起來也很簡單。
查看選項2瞭解更多詳情以下兩個鏈接:
感謝您的回覆。我忘了說所有的對象有不同的顏色 –
@MuneemHabib:這很好,你只打算用它們標識唯一每當用戶點擊屏幕上的色彩渲染的對象。您應該立即重新繪製場景(在執行'glReadPixels(...)'後)以正常方式隱藏僞色。 –
由於內存帶寬不足,額外的渲染過程在移動設備上非常痛苦。如果可能的話,應該優先選擇未投影。 –
- 1. 檢測用戶觸摸UIScrollView
- 2. 檢測OpenGL對象的觸摸?
- 3. 檢測用戶觸摸了一個OpenGL多
- 4. 檢測用戶觸摸的iOS 5
- 5. 的iOS檢測用戶觸摸釋放
- 6. 檢測哪個uiscrollview用戶觸摸
- 7. 檢測用戶何時觸摸鏈接
- 8. 自定義UIView檢測用戶觸摸
- 9. UiScrollview scrollviewDidScroll檢測用戶觸摸
- 10. 觸摸不檢測?
- 11. android檢測觸摸
- 12. android檢測觸摸
- 13. 檢測CAShapeLayer觸摸
- 14. 檢測觸摸UIButton
- 15. UINavigationItem:檢測觸摸
- 16. 觸摸後如何檢測觸摸
- 17. 檢測UIScrollView下的觸摸
- 18. 的UIImageView觸摸檢測
- 19. 檢測觸摸次數
- 20. 檢測複選框觸摸
- 21. 檢測觸摸屏桌面
- 22. 在UIView上檢測觸摸
- 23. 檢測觸摸Cocos2d-x
- 24. Modernizr觸摸檢測破損
- 25. 在CCSprite上檢測觸摸
- 26. 在NSOpenGLView上檢測觸摸
- 27. UIImageView子類觸摸檢測
- 28. iPhone - 觸摸區域檢測
- 29. 檢測全球觸摸
- 30. 觸摸檢測問題
更多的信息是必要的。當你說「用戶觸摸」時,你的意思是點擊或碰撞?一般來說,您不會使用OpenGL檢測這兩種情況(除非您使用「選擇緩衝區」來選擇)。 –
我的意思是點擊街道,然後我想知道天氣選定的項目是多邊形,多段線或線? –
有什麼辦法通過opengl檢測這些對象嗎? –