- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我的理解是,当使用 GLSurfaceview 时,eglSwapBuffers 会在每一帧自动调用,所以:
onDrawFrame()
{
//Your drawing code here
//system swaps buffers automatically
}
有什么办法可以禁用此行为并在每个 onDrawFrame() 结束时自己/手动调用 eglSwapBuffers 或在我需要时抑制它(即,让它在我想要的时候运行但停止它在我需要时停止运行)。
如果可能的话,如果有人可以解释在同时使用 RENDERMODE_CONTINUOUSLY 和 RENDERMODE_WHEN_DIRTY 时如何(如果可能)实现这一点,我将不胜感激
当然,我的理解可能有误,如有错误请指正:-)
最佳答案
GLSurfaceView
不是特别灵活。如果 onDrawFrame
返回一个“do draw” bool 值就好了;那么您在安排游戏循环方面会有更多的灵 active 。但是,GLSurfaceView
不能那样工作,所以您的选择是有限的。
如果你想避免渲染每一帧,你有两种基本方法:
(1) 使用RENDERMODE_WHEN_DIRTY
,并且只有当您知道您想要在onDrawFrame
完成时交换缓冲区时才请求渲染。如果您的游戏逻辑不在渲染线程上运行并且您不尝试以 60fps 运行,这几乎就是您想要做的事情。
(2) 下载 GLSurfaceView
的源代码,将其合并到您的应用中,然后修改它以执行您想要的操作。
关于Android eglSwapBuffers - 手动控制? (安卓),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16399961/
今天我发现我的opengles程序帧时间有时会不明原因增加,通常是16ms,但有时完成一帧需要33ms。经过数小时的分析和研究,我发现了原因:帧时间增加是因为“eglSwapBuffers”比平时花费
我正在 Raspberry Pi 3 上开发一个简单的游戏。作为操作系统,我使用官方的 Raspbian Stretch Lite。该游戏在没有 X 服务器的情况下运行,并使用 SFML PI 在 C
我正在 Android 和 native C++ 中使用 EGL 1.1 为 android 实现场景绘制。 当前使用 Android 的 glSurfaceView - 当后台缓冲区和前台缓冲区交换
我在使用 NDK 和 egl 命令的 Android 平板电脑上遇到渲染时间非常短的问题。我对 eglSwapBuffers 进行了定时调用,并且花费的时间不定,经常超过设备帧速率。我知道它与刷新同步
我的理解是,当使用 GLSurfaceview 时,eglSwapBuffers 会在每一帧自动调用,所以: onDrawFrame() { //Your drawing code here //sy
我有一个视频效果应用程序,我在其中使用 OpenGL 绘制到帧缓冲区对象,然后将生成的纹理绘制到显示器,然后是 MediaCodec 输入表面(如果该应用程序正在编码)。 我最初是在同步模式下为 AP
我目前将 OpenGL 应用程序(仅绘制 2D 内容)移植到 OpenGL ES,以便在 Raspberry Pi 上正常运行。 由于某种原因,eglSwapBuffers 花费了大量时间。这是我所做
我正在使用抛出异常的 And 引擎开发游戏。其实我不知道发生异常的地方。市场上多次报道。 java.lang.RuntimeException: eglSwapBuffers failed:
我正在开发一个 Android Unity 插件,允许用户记录他/她的游戏过程 我的解决方案概述: 使用 OpenGl FrameBufferObject (FBO) 让 Unity 渲染离屏到这个
我在 Google Play 商店中有一个 OpenGL 应用程序,我每天都遇到异常: java.lang.RuntimeException: eglSwapBuffers failed: EGL_S
我想知道在使用 xlib 时如何使用 eglSwapBuffers 正确启用 vsync。似乎对 eglSwapInterval 的调用被简单地忽略了。 我在窗口模式和全屏模式下运行。是否有可能在窗口
我有安卓游戏,使用libgdx框架 在 Google Play 商店中有报告: java.lang.RuntimeException: eglSwapBuffers failed: EGL_SUCCE
我正在为 Android 平台开发一款游戏,使用 Java 和 LibGDX 引擎。 我遇到了一个奇怪的问题,我的游戏中的 FPS 每 30-40 秒从 57-60 帧连续下降到 40-45 帧,然后
我是一名优秀的程序员,十分优秀!