我有在OpenGL平滑滚动(测试上SGS2和ACE)
问题我创建简单的应用程序 - 图像的唯一固定速度横向滚动,或仅一个图像(播放器)由加速器移动, 但它的运动不顺畅:-(
我尝试了许多不同的代码,但没有满意...的Android光滑游戏循环
首先我想工作,GLSurfaceView.RENDERMODE_CONTINUOUSLY,我把所有的代码onDrawFrame:
public void onDrawFrame(GL10 gl)
{
updateGame(gl, 0.017f);
drawGame(gl);
}
这是最简单和绝对平滑! - 但它是依赖于硬件速度(=没用)
public void onDrawFrame(GL10 gl)
{
frameTime = SystemClock.elapsedRealtime();
elapsedTime = (frameTime - lastTime)/1000;
updateGame(gl, elapsedTime);
drawGame(gl);
lastTime = frameTime;
}
,这是最重要的,但它并不像以前的,有时轻拂
第二我想GLSurfaceView.RENDERMODE_WHEN_DIRTY顺利,在onDrawFrame我只有绘图对象和此代码在单独的线程中:
while (true)
{
updateGame(renderer, 0.017f);
mGLSurfaceView.requestRender();
next_game_tick += SKIP_TICKS;
sleep_time = next_game_tick - System.currentTimeMillis();
if (sleep_time >= 0)
{
try
{
Thread.sleep(sleep_time);
}
catch (Exception e) {}
}
else
{
Log.d("running behind: ", String.valueOf(sleep_time));
}
}
这不光滑,它不是问题m与“后面跑步”
我的目标是像上面第一个代码示例一样的平滑图像移动。
可能的错误是其他地方,然后我看。请,有人可以帮我吗?
更好地使用RENDERMODE_WHEN_DIRTY或RENDERMODE_CONTINUOUSLY?
谢谢。
'通过移动加速器' 加速还给你心惊肉跳的数据。这可能是你的问题吗?试着用“someLoc + =(newLoc - someLoc)* .1f;”来平滑运动 – zezba9000
你好,如果我尝试禁用加速度计,只用简单的移动图像通过不断的价值,它零星的轻弹(现在尝试用RENDERMODE_WHEN_DIRTY) – Commanche