我一直在将 Node.JS FFI 更新为 SDL 以使用 SDL2。( https://github.com/Freezerburn/node-sdl/tree/sdl2 ) 到目前为止,一切进展顺利,我可以成功渲染 1600 多种彩色纹理而没有太多问题。但是,我刚刚开始遇到一个我似乎无法弄清楚的问题,并且似乎与 FFI、GC、Javascript 的速度等没有任何关系。
问题是,当我在启用 VSYNC 的情况下调用 SDL_RenderPresent 时,偶尔每隔几秒钟,此调用将需要 20-30 毫秒或更长时间才能完成。看起来这种情况连续发生 2-3 次。这会在屏幕上移动的任何内容中造成非常短暂但明显的视觉障碍。其余时间,此调用将花费正常的时间来显示在正确时间绘制到屏幕上的任何内容,以便与屏幕同步,并且一切看起来都非常流畅。
如果您克隆上面提到的存储库,您可以看到这一点。使用 node-gyp 构建它,然后运行 test.js。(我可以将测试代码嵌入到 StackOverflow 中,但我认为在 GitHub 上提供完整示例会更容易)需要 SDL2、SDL2_ttf、SDL2_image 位于 /Library/Frameworks 中。(这仍在开发中,所以没有什么特别的东西可以自动查找 SDL2,或者在存储库中拥有所需的代码,或者从某个地方拉取等等)
编辑:这应该可能在 gamedev StackExchange 网站下。不知道它是否可以移动/链接。