0

我正在使用 Rajawali 框架制作基于 OpenGL ES 的动态壁纸。为了实现我的许多动画效果,我创建了一些从 onDrawFrame 方法调用的函数。这些函数从简单的 x,y,z 旋转到带有模拟风或其他随机运动的条件语句的更复杂的方程。它目前运行良好,并且响应速度非常快,尤其是在睡眠和唤醒设备时。

随着我的动态壁纸变得越来越复杂,我担心我的粗略解决方案最终会开始导致性能问题。是这样吗?

有没有更好的方法来进行这些类型的循环或重复更改,比如制​​作后台线程?

4

2 回答 2

0

尝试将尽可能多的计算转移到顶点和片段着色器中。比 CPU 限制更容易达到其他限制。没有示例并且不深入了解您要存档的内容,没有人可以轻松回答您的问题。

最佳提示:在开发过程中经常和早期进行测量。

希望有帮助。

于 2013-01-28T14:58:54.907 回答
0

Rajawali onDrawFrame() 方法由计时器调用,该计时器使用 frameRate() 方法设置。这提供了比估计线程休眠更平滑的动画(不建议使用的替代解决方案)。

如果您的速度为 100 fps,这将在帧之间为您提供 10 毫秒的时间来进行计算——仅此而已,但这对于现代 CPU 来说是很多时间。

将 GPU 计算放在单独的线程中是有问题的,因为这不是线程安全的。您可以将任何非 GPU 计算放在单独的线程中,但这可能会导致同步问题。

着色器被编译为本机代码,但实际上应该仅限于在完成所有昂贵的 3D 计算后渲染实际像素(始终是瓶颈)所需的按位(整数)操作。

例如,浮雕着色器将负责覆盖两个立体帧。

希望这可以帮助!

于 2013-07-02T17:34:56.763 回答