android - Opengl-es手动调用onDrawFrame

标签 android opengl-es renderer glsurfaceview game-loop

我正在创建一个游戏循环,并且我需要能够调用 onDrawFrame (从渲染器内部手动),以便在发现进程落后时“跳过帧”。

目前我有一个调用的 GLSurfaceView 类

setRenderer(glSurfaceRenderer);

通过这个设置,我知道 onDrawFrame 会在每个刻度线被调用。

我尝试将上述调用放入一个方法中,以便我可以从游戏循环内部调用它,但在游戏循环的第二次运行时,我崩溃并显示消息

setRenderer has already been called for this instance

有没有办法每帧手动调用渲染器

只会调用

onDrawFrame

方法工作正常。或者在使用openGL时以这种方式控制渲染器不是一个好习惯

最佳答案

我不明白在游戏循环中调用 setRenderer() 或手动调用 onDrawFrame() 将如何解决任何问题。您应该重构渲染调用以考虑绘制所需的时间,换句话说就是基于时间的动画。在任何情况下,在任何绘图调用之前手动调用 onDrawFrame() 而不调用 eglMakeCurrent() 都将不起作用,因为您同时拥有渲染器和游戏循环线程绘图。

编辑:由于您使用的是 GLSurfaceView,因此如果您觉得 RENDERMODE_CONTINUOUSLY 对您来说太慢,可以从游戏循环中调用 requestRender() 来触发渲染。

关于android - Opengl-es手动调用onDrawFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7421976/

相关文章:

android - 在recyclerview中使用textureview播放视频

android - setFontFeatureSettings 错误 noSuchMethodError

ios - 绑定(bind)第二个顶点缓冲区似乎破坏了我的第一个顶点缓冲区,OpenGL OES ios 5.1

java - JTextPane:setCharacterAttributes 的渲染器是什么?

java - Swing JList SetCellRenderer 背景颜色不起作用

enums - 为 Vaadin 14 Web 应用程序中的枚举支持的单选按钮生成标签

android - 在 Android 中解析多个 JSON 对象

java - 数据存储方法 - 意见

android - 来自 glSurfaceView 的位图为空

使用 setLookAtM 方法的 Android OpenGL 怪异