#rust
主要是用 Rust clone sowon - Starting Soon Timer for Tsoding Streams 用来学习的项目。
Sowon Rust
看 C 版的代码,没搞过 SDL2,看不懂的 API,就看 C 文档,看 Rust 中 sdl2 binding 的文档 。
API 设计形式可能一样,有需要包装类,用动态指针更好的管理内存。
SDL2 Rust Doc
SDL2 Doc
主要实现思虑是,使用包含数字的图片加载成 sdl 中的 texture,然后每次根据窗口的大小计算需要画这些数字的位置。
怎么实现数字抖动的?其实就是在取 texture 图像的时候,每次根据抖动频率来进行特定的偏移,然后取模保整处于一个循环中。
渲染,可以看到 src_rect 会根据 wiggle_index 来确定 texture 中的要取的高度位置。
抖动频率控制
还有个比较有意思的是帧率管理,在 fps 为 60 时,代表一秒中要迭代渲染 60 次画面。
通过 frame_end()
确保每帧不会超出设定的 fps_cap
的每帧时隔时间,通过帧延迟来控制渲染速度,防止帧率过高。
这样就确保无论实际帧率如何,游戏或动画中的移动、物理效果等都能按照相同的速率运行。这解决了帧率不稳定可能导致的动画速度变化问题。
然后我的们控制的时间是秒为单位的,所以每次渲染加等于 dt 就行。