Dear ImGui - ImDrawList 1.93 Interactive Testbed

Last updated:

The same ImDrawList calls, rendered by Dear ImGui 1.92.9 and by the 1.93 draw list rework, pixel by pixel. Every view runs the library's own code and a reference rasterizer that follows GPU rules. Hover a pixel to read its value. Zoom with the buttons or Ctrl + wheel (×1 is actual size), drag to pan. Examples are numbered, e.g. [107]: the numbers are stable and can be used in links and discussions.

This page is a single self-contained .html file: you can save it (Ctrl+S, or right-click → Save as) to keep or share a copy. It works offline.

1.92.9
The code as written, compiled against 1.92.9. Reference for the difference counts.
1.93 legacy
Same code on 1.93 inside PushDrawFlag(ImDrawFlags_StrokeLegacy, true), which is what io.ConfigDebugDrawListDefaultsToStrokeLegacy applies to every draw list. Each individual draw_list->AddXXX() call may specify ImDrawFlags_StrokeLegacy.
1.93 default
Same code on 1.93, nothing else changed. This is what you get after updating.
1.93 alternative
Another way to write the call in 1.93, where one is worth showing: a different function, an explicit stroke position, or code that reproduces the old look. Some examples have two (A and B), stacked.
View
Colors
Style
Show
Extra column
Backend Who fills the triangles. Results only differ where an edge passes exactly through pixel centers.

Loading both library builds…