【问题标题】:NDK SurfaceView redraw got broken display on screen rotateNDK SurfaceView 重绘在屏幕旋转时显示损坏
【发布时间】:2020-04-27 14:19:26
【问题描述】:

我正在使用带有 ndk+openGL 的 SurfaceView,当按下模拟器的屏幕旋转按钮时, 我从 SurfaceHolder.Callback 收到 SurfaceChanged 事件,然后通过 Handler 发布重绘消息,Handler 通过 JNI 原生代码使用新的显示指标重绘屏幕,但显示已损坏,如图所示。

我确定原生OpenGL绘图代码在按下旋转按钮后屏幕旋转完成之前已经绘制了一帧,但不知道为什么显示坏了。

我对android不太熟悉,谁能帮帮我。谢谢。

编辑: 当我进行一些触摸事件以触发新帧时,显示已修复。 所以我在想是否有一个旋转完成事件,所以我可以强制绘制一帧来解决这个问题。

【问题讨论】:

  • 你能用“原生 OpenGL 绘图代码”编辑你的帖子吗?
  • 代码库很大,我不能在这里发布,但我可以解释一下流程。它就像一个简单的 opengl 应用程序,将 eglContext 设为当前、绘图和交换缓冲区。可能我需要一些调用来锁定/解锁 SurfaceView 缓冲区?

标签: android opengl surfaceview


【解决方案1】:

问题解决了。

重写SurfaceHolder.Callback2的surfaceRedrawNeeded方法,旋转完成后调用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-17
    • 2021-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多