【发布时间】:2011-05-18 20:21:05
【问题描述】:
我正在尝试创建一个显示游戏区域地图的 GLSurfaceView。当玩家移动时,游戏 Activity 会调用 highlightSpot,这又会触发渲染请求。我想重新绘制视图的唯一时间是玩家移动时。
但是,在我当前的实现中,尽管在我的 GLSurfaceView 上调用了setRenderMode(RENDERMODE_WHEN_DIRTY),但它的渲染模式似乎仍然是连续的。为了检查,我在我的 onDrawFrame 方法中抛出了一个 println 语句,当我运行我的应用程序时,输出很快就填满了我的 logcat,而玩家甚至没有移动一次——它显然没有按照我的预期运行。为了使视图仅在被询问时呈现,我还需要做些什么吗?
(这段代码的大部分来自http://insanitydesign.com/wp/projects/nehe-android-ports/ 的教程。为了简洁起见,我省略了我的 onDrawFrame、OnSurfaceChanged 和 onSurfaceCreated 方法,因为我没有更改渲染模式或在其中的任何地方请求渲染方法。如果有人认为它可能相关,我也可以发布。)
public class SurfaceViewClass extends GLSurfaceView implements Renderer {
public SurfaceViewClass(Context context) {
super(context);
...
this.setRenderer(this);
this.setRenderMode(RENDERMODE_WHEN_DIRTY);
}
public void highlightSpot(int x, int y) {
/* change some variables here */
...
this.requestRender();
}
}
【问题讨论】:
标签: android opengl-es glsurfaceview