【问题标题】:GLSurfaceView.RENDERMODE_CONTINUOUSLY causes flickerGLSurfaceView.RENDERMODE_CONTINUOUSLY 导致闪烁
【发布时间】:2014-04-05 19:39:21
【问题描述】:

正如已经提到的这行代码

setRenderMode(GLSurfaceView.RENDERMODE_CONTINUOUSLY);

导致我的应用程序闪烁不定。 这意味着如果我将其更改为

setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);

它停止闪烁。

我使用的设备是华硕 Padfone a86。

您有解决此问题的想法吗?

【问题讨论】:

    标签: android rendering opengl-es-2.0 glsurfaceview


    【解决方案1】:

    有两种可能:操作系统做错了,或者你的应用做错了。

    如果您在任何其他应用程序或系统动画中都没有看到闪烁,则不太可能是系统有问题。您并没有真正描述闪烁的性质,但有几个常见问题。

    一种可能性是每次调用onDrawFrame() 时您都没有完全重绘屏幕。如果不这样做,系统将显示空白或先前渲染的帧。另一种可能性是您在 onDrawFrame() 执行时更新了状态,因此您会得到一个带有部分更新的帧,这会将对象留在奇怪的地方。

    当然,如果您使用 RENDERMODE_WHEN_DIRTY 获得了您想要的结果,您可能只想坚持下去。

    【讨论】:

    • 感谢您的回答。在我的情况下,将其设置为 RENDERMODE_WHEN_DIRTY 不是选项。您能否解释一下如何显式重绘整个屏幕,因为我对 OpenGL 很陌生。
    • glClear() 开始绘制所有内容。使用GLSurfaceView,你没有选择从onDrawFrame()返回而不绘图。
    • glClear(...) 为我工作。非常感谢你。没想到会这么容易。 ^^
    • 酷。您可能想以code.google.com/p/android-breakout 为例。这是一款非常简单的游戏,但它基于GLSurfaceView 并练习了所有基本功能。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-24
    • 2012-07-23
    • 2011-10-23
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    相关资源
    最近更新 更多