首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Opengl-es手动调用onDrawFrame

Opengl-es手动调用onDrawFrame
EN

Stack Overflow用户
提问于 2011-09-15 03:35:35
回答 1查看 6.7K关注 0票数 2

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

目前,我有一个GLSurfaceView类,它调用

代码语言:javascript
复制
setRenderer(glSurfaceRenderer);

有了这样的设置,我知道onDrawFrame被称为“每一个滴答”。

我试着将上面的调用放在一个方法中,这样我就可以从我的游戏循环中调用它,但是在游戏循环的第二次运行时,我崩溃了,并显示以下消息

代码语言:javascript
复制
setRenderer has already been called for this instance

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

将只调用

代码语言:javascript
复制
onDrawFrame

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-15 04:06:41

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

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7421976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档