游戏中的时间:有没有办法使用其他System.Currentmillis()-starttime>XX
来更新游戏中的任何内容?它安全还是CPU昂贵?
在我的游戏中我有20个项目(移动方形顶点),当它达到60-70顶点时,FPS从60 FPS下降到30-40 FPS.(在Galaxy S i9000手机上测试).有没有办法让我的游戏FPS将是30FPS?将我的游戏更新为30 FPS是否有用,或者我不需要处理这个?(因为较低的FPS会有一个滞后 - 它会很慢)
我如何能够以相同的速度随时运行我的物体?
什么是最好的方法:做phisyx,和onDrawFrame中的所有stupp,或者:启动一个Thread为我做数学的是什么?什么是更快更好?
Wro*_*lai 11
游戏中的时间:有没有办法使用其他System.Currentmillis() - starttime> XX来更新游戏中的任何内容?它安全还是CPU昂贵?
您应该使用时间增量系统.有很多关于此的教程.这是一个非常好的教程:deWiTTERS游戏循环.
在我的游戏中我有20个项目(移动方形顶点),当它达到60-70顶点时,FPS从60 FPS下降到30-40 FPS.(在Galaxy S i9000手机上测试).有没有办法让我的游戏FPS将是30FPS?将我的游戏更新为30 FPS是否有用,或者我不需要处理这个?(因为较低的FPS会有一个滞后 - 它会很慢)
这取决于您使用的方法.如果是3D,你应该考虑使用Vertex Buffer Objects
(VBO:s
)(就像Vertex Array
你设备的GPU内存一样).这是一个巨大的差异,因为CPU不需要每次迭代都将数据从CPU复制到GPU.
如果是2D,您仍然可以使用VBO:s
但是如果draw_texture
在推荐的设备上支持.
但是,选项包括:
Vertex Arrays
(最慢).Vertex Buffer Objects
(3D最快,比draw_texture
2D 慢).draw_texture
扩展(在2D中最快,但不渲染3D内容). 您可以支持所有这些方法来涵盖所有Android设备,但请记住检查设备OpenGL
驱动程序的扩展名.有些人可能支持所有这些,但可能只有支持Vertex Arrays
和VBO:s
(例如)的设备.
我在这里回答了一个相关的问题,但只是为了告诉你; 这是Chris Pruett在Google I/O上的一个讲座:
我如何能够以相同的速度随时运行我的物体?
你不能.Android是一个多处理操作系统,你不知道发生了什么(也许另一个Service
应用程序正在更新?).您可以做的是使用时间增量系统,就像我上面提到的那样.
什么是最好的方法:做phisyx,和onDrawFrame中的所有stupp,或者:启动一个Thread为我做数学的是什么?什么是更快更好?
建议多线程(两个Thread
并行运行).不久,做你的绘图内容onDrawFrame
并更新你自己创建的Thread
/中的东西Runnable
.
推荐资源:
归档时间: |
|
查看次数: |
2743 次 |
最近记录: |