
GeeXLab 0.40.0 comes with Dear ImGui 1.80 and one of the new feature is the new table API to build tables. If your code uses the column functions (gh_imgui.column_xxxxx()) to build tables, don’t panic, the column API is still there.
All functions of the new table API are available in the gh_imgui lib:
gh_imgui.table_begin()
gh_imgui.table_end()
gh_imgui.table_next_row()
gh_imgui.table_next_column()
gh_imgui.table_set_column_index()
gh_imgui.table_setup_column()
gh_imgui.table_setup_scroll_freeze()
gh_imgui.table_headers_row()
gh_imgui.table_header()
gh_imgui.table_get_column_count()
gh_imgui.table_get_column_index()
gh_imgui.table_get_row_index()
gh_imgui.table_get_column_name()
gh_imgui.table_get_column_flags()
gh_imgui.table_set_bg_color()
A demo showing the table API in action is available in the OpenGL 2.1 demopack in the
d29-imgui/imgui-table/ folder.
Here is a code snippet that shows how to draw the table you can see on the post header screenshot:
local flags = ImGuiTableFlags_Resizable + ImGuiTableFlags_Borders
if (gh_imgui.table_begin("Table1", 2, flags, 0,0, 0) == 1) then
gh_imgui.table_setup_column("Feature")
gh_imgui.table_setup_column("Value")
gh_imgui.table_headers_row()
gh_imgui.table_next_column()
gh_imgui.text("Model")
gh_imgui.table_next_column()
gh_imgui.text("Radeon RX 6800 XT")
gh_imgui.table_next_column()
gh_imgui.text("GPU")
gh_imgui.table_next_column()
gh_imgui.text("Navi 21")
gh_imgui.table_next_column()
gh_imgui.text("Arch")
gh_imgui.table_next_column()
gh_imgui.text("RDNA 2")
gh_imgui.table_next_row()
gh_imgui.table_next_column()
gh_imgui.text("Shader cores")
gh_imgui.table_next_column()
gh_imgui.text("4608")
gh_imgui.table_next_row()
gh_imgui.table_next_column()
gh_imgui.text("Compute units")
gh_imgui.table_next_column()
gh_imgui.text("72")
gh_imgui.table_next_column()
gh_imgui.text("TMUs")
gh_imgui.table_next_column()
gh_imgui.text("288")
gh_imgui.table_next_column()
gh_imgui.text("ROPs")
gh_imgui.table_next_column()
gh_imgui.text("64")
gh_imgui.table_next_column()
gh_imgui.text("Ray acceleration units")
gh_imgui.table_next_column()
gh_imgui.text("72")
gh_imgui.table_next_column()
gh_imgui.text("Power draw")
gh_imgui.table_next_column()
gh_imgui.text("300W")
gh_imgui.table_next_row()
gh_imgui.table_next_column()
gh_imgui.text("GeeXLab")
gh_imgui.table_next_column()
gh_imgui.url("homepage", "https://geeks3d.com/geexlab/", "URL: https://geeks3d.com/geexlab/")
gh_imgui.table_end()
end
Constants like ImGuiTableFlags_Resizable are defined in the imgui.lua file available in GeeXLab/libs/lua/ folder.
If you want to see all possibilities of the table API, just look at the built-in ImGui demo (available in the d29-imgui/imgui-01/ folder of the OpenGL 2.1 demopack):
To be honest, I haven’t tested all new functions. I think I added all necessary functions to code tables like in ImGui official demo, but I may have forgotten something…