如何在擴展GLSurfaceView的類上調用onDraw()方法。我需要畫布來繪製用戶的手勢。 (FingerPaint.java邏輯)。同時我需要渲染器的onDrawFrame()來調用其他效果。我可以通過維護一個標誌來管理對這兩種方法的調用。我調用invalidate(),但也無法調用onDraw()。 GLSurfaceView擴展視圖,所以我想我可以重寫onDraw()並可以通過調用invalidate()來調用它。請扔一些燈。感謝在提前克里希納:)如何調用擴展GLSurfaceView類的onDraw()?
回答
嘗試從您的GLSurfaceView調用requestRender()。 顯然,將rendermode設置爲「RENDERMODE_WHEN_DIRTY」時效果最佳。 這意味着你將不會連續渲染,因此可能會干擾效果所需的「常量」渲染。
我認爲最好的解決方案是在2個疊加曲面和2個渲染器之間分割渲染。每當用戶進行交互時,請求底部表面(指紋表面)渲染一個框架,並在您連續渲染的頂部(gfx表面)上渲染一個框架。或者交換一下......無論哪個效果最好。
@Eric感謝您付出艱辛的回答。 :)其實我正在使用GLSurfaceView及其渲染器來顯示pageTurn效果。我想使用onDraw(final Canvas c)作爲FingerPaint.java邏輯,即用戶塗鴉。現在我想要潦草的路徑也有翻頁的效果。所以我想在相同的位圖上進行翻頁和塗寫。 – 2012-02-02 13:44:44
您可以將用戶塗鴉渲染到紋理,然後在渲染翻頁時使用該紋理。 – Erik 2012-02-02 14:37:34
我不認爲你可以擁有多個SurfaceViews,至少在Android-4之前。所以你將不得不做你自己的屏幕合成。 – 2012-02-03 02:14:39
只要調用invalidate()和onDraw()就可以調用,就像普通的View一樣。畫布繪製在GLES視口的頂部。
到目前爲止我無法執行invalidate(Rect dirty)。整個視圖總是重繪。
在繪製之前需要放置setWillNotDraw(false)。
- 1. 如何放入擴展GLSurfaceView的LinearLayout類?
- 2. 擴展類但基本調用需要調用擴展類
- 3. 如何從另一個類調用onDraw?
- 4. 如何擴展擴展類的接口
- 5. 如何定期調用onDraw?
- 6. Android OpenGL擴展GLSurfaceView空指針異常
- 7. 從擴展類調用
- 8. 如何從擴展覆蓋類的類中調用活動
- 9. 在GLSurfaceView類中的NDK調用
- 10. 如何讓用戶控件擴展一個擴展UserControl的類?
- 11. 使用擴展方法的擴展類
- 12. Android:如何調用擴展MapActivity的類的ListActivity方法?
- 13. 如何強制在GLSurfaceView上調用onDrawFrame()?
- 14. 如何在未擴展的類中調用getResouces()Activity?
- 15. 如何調用Applet擴展類中的paint方法?
- 16. 如何調用動態類型的擴展方法?
- 17. 如何擴展類實例?
- 18. 如何擴展SQLiteDatabase類?
- 19. 如何擴展logger.Logging類?
- 20. 如何擴展Image類?
- 21. 如何擴展位圖類
- 22. 如何擴展JComboBox類?
- 23. 如何擴展2個類?
- 24. 如何擴展PreferenceCategory類
- 25. 如何擴展這個類?
- 26. 如何擴展javascript類
- 27. 如何擴展css類
- 28. 如何擴展兩個類
- 29. 如何擴展MembershipUser類?
- 30. 如何擴展UITextView類?
當您將渲染類設置爲它時,它會自動調用 – Sameer 2012-02-02 12:51:04
當我們設置渲染類,然後調用onDrawFrame()。我想調用onDraw(),這是在我的課中擴展GLSurfaceView – 2012-02-02 13:21:04