如何在扩展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