【发布时间】:2020-04-27 14:19:26
【问题描述】:
我正在使用带有 ndk+openGL 的 SurfaceView,当按下模拟器的屏幕旋转按钮时, 我从 SurfaceHolder.Callback 收到 SurfaceChanged 事件,然后通过 Handler 发布重绘消息,Handler 通过 JNI 原生代码使用新的显示指标重绘屏幕,但显示已损坏,如图所示。
我确定原生OpenGL绘图代码在按下旋转按钮后屏幕旋转完成之前已经绘制了一帧,但不知道为什么显示坏了。
我对android不太熟悉,谁能帮帮我。谢谢。
编辑: 当我进行一些触摸事件以触发新帧时,显示已修复。 所以我在想是否有一个旋转完成事件,所以我可以强制绘制一帧来解决这个问题。
【问题讨论】:
-
你能用“原生 OpenGL 绘图代码”编辑你的帖子吗?
-
代码库很大,我不能在这里发布,但我可以解释一下流程。它就像一个简单的 opengl 应用程序,将 eglContext 设为当前、绘图和交换缓冲区。可能我需要一些调用来锁定/解锁 SurfaceView 缓冲区?
标签: android opengl surfaceview