Impressed and at the same time disappointed with nanogui on GLFW
September 22, 2026I have been building the 3D-accelerated GUIs across a few of my apps on top of GLFW and nanogui, and on the whole they have been a pleasure to work with — lightweight, cross-platform, and easy to reason about. But the more backends I push them through, the more one problem keeps following me around: screen tearing. It shows up differently depending on the backend, and on one of them it is bad enough that I cannot ship with it as-is.
Metal backend — minor tearing
nanogui over GLFW3, Metal backend — minor screen tearing.
On Metal the tearing is subtle. You have to be looking for it, and during normal fast-moving content it is easy to miss entirely. It is the kind of thing I can live with while I keep iterating.
Vulkan backend — major tearing
nanogui over GLFW3, Vulkan backend — major screen tearing.
On Vulkan it is a different story. The tearing is obvious and distracting, right there during ordinary interaction. Something in how swap intervals and presentation are being handled on this backend is not behaving the way I would expect, and it is the part of this stack I am least happy with right now.
So, impressed by how far GLFW and nanogui get me with so little friction, and disappointed that presentation on the Vulkan side still needs real work before I would call it production-ready. I will keep digging into swap chain and vsync settings and report back once I have something more solid.
Thank you so much for viewing, and have a good one as always!
campanile Labs