如何调用扩展GLSurfaceView的类的onDraw()?

时间:2012-02-02 12:08:06

标签: android opengl-es

如何在扩展GLSurfaceView的类上调用onDraw()。我需要画布来绘制用户的手势。 (FingerPaint.java逻辑)。这意味着我需要为其他效果调用渲染器的onDrawFrame()。我可以通过维护一个标志来管理对这两种方法的调用。我调用invalidate()但是也无法调用onDraw()。 GLSurfaceView扩展了View,所以我认为我可以覆盖onDraw()并可以通过调用invalidate()来调用它。请投入一些光。先谢谢克里希纳:)

2 个答案:

答案 0 :(得分:1)

尝试从GLSurfaceView调用 requestRender()。 显然,将rendermode设置为“RENDERMODE_WHEN_DIRTY”时效果最佳。 这意味着你不会连续渲染,因此可能会干扰效果所需的“恒定”渲染。

我认为最好的解决方案是在2个重叠表面和2个渲染器之间分割渲染。请求底部曲面(指纹表面)在用户交互时渲染帧,并在连续渲染的顶部(gfx曲面)上渲染帧。或者换掉这个...无论什么效果最好。

答案 1 :(得分:0)

只需调用invalidate()和onDraw(),就像普通的View一样。画布绘制在GLES视口的顶部。

到目前为止,我无法实现invalidate(Rect dirty)。整个视图总是重新绘制。

需要在绘制之前放置setWillNotDraw(false)。