在raylib中创建精灵动画的最佳方式?帧延迟与计时器抉择
Raylib中动画实现的方案选择疑问
我不确定在raylib中创建动画最有效的方法是什么,目前想到两种方案:
- 基于帧延迟更新帧
- 基于计时器更新帧
第一种方案不太理想,因为它不具备FPS独立性——在我的设备上运行正常,但在其他设备上可能过快或过慢。第二种方案则需要编写繁琐的计时器样板代码。
raylib的示例里大量使用帧延迟来更新帧,尽管这是个基础问题,但我完全不清楚哪种方案更好,也没找到相关的实用建议。是否有公认的共识?我个人倾向于使用计时器,因为它不受FPS影响(用GetFrameTime()函数计算上一帧后的时间增量)。
下面是我写的一个简单Timer实现:
typedef struct { float Lifetime; } Timer; void startTimer(Timer *timer, float Lifetime) { if (timer != nullptr && Lifetime > 0) { timer->Lifetime = Lifetime; } } void updateTimer(Timer *timer) { if (timer != nullptr && timer->Lifetime > 0) { timer->Lifetime -= GetFrameTime(); } } bool timerFinished(Timer *timer) { if (timer != nullptr) { return timer->Lifetime <= 0; } return false; }
我认为这个实现很直观,但正如我所说,它不够美观。
内容的提问来源于stack exchange,提问作者johannes-el
相关产品推荐
相关产品推荐

