.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "gallery/imgui_multi_canvas.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code. .. rst-class:: sphx-glr-example-title .. _sphx_glr_gallery_imgui_multi_canvas.py: ImGui Multi-Canvas ------------------ Example showing how to use multiple imgui contexts to draw to multiple canvases .. GENERATED FROM PYTHON SOURCE LINES 8-92 .. code-block:: Python # run_example = false import wgpu from imgui_bundle import imgui from rendercanvas.auto import RenderCanvas, loop from wgpu.utils.imgui import ImguiRenderer # Create a canvas to render to canvas1 = RenderCanvas(title="imgui", size=(512, 256)) canvas2 = RenderCanvas(title="imgui", size=(512, 256)) canvas3 = RenderCanvas(title="imgui", size=(512, 256)) canvases = [canvas1, canvas2, canvas3] # Create a wgpu device adapter = wgpu.gpu.request_adapter_sync(power_preference="high-performance") device = adapter.request_device_sync() # create an imgui renderer for each canvas imgui_renderer1 = ImguiRenderer(device, canvas1) imgui_renderer2 = ImguiRenderer(device, canvas2) imgui_renderer3 = ImguiRenderer(device, canvas3) # Separate GUIs that are drawn to each canvas def update_gui1(): imgui.set_next_window_size((300, 0), imgui.Cond_.appearing) imgui.set_next_window_pos((0, 20), imgui.Cond_.appearing) imgui.begin("window1", None) imgui.button("b1") imgui.end() def update_gui2(): imgui.set_next_window_size((300, 0), imgui.Cond_.appearing) imgui.set_next_window_pos((0, 20), imgui.Cond_.appearing) imgui.begin("window2", None) imgui.button("b2") imgui.end() def update_gui3(): imgui.set_next_window_size((300, 0), imgui.Cond_.appearing) imgui.set_next_window_pos((0, 20), imgui.Cond_.appearing) imgui.begin("window3", None) imgui.button("b3") imgui.end() # give the corresponding gui updater functions to the imgui renderers imgui_renderer1.set_gui(update_gui1) imgui_renderer2.set_gui(update_gui2) imgui_renderer3.set_gui(update_gui3) # draw function for each canvas def draw1(): imgui_renderer1.render() canvas1.request_draw() def draw2(): imgui_renderer2.render() canvas2.request_draw() def draw3(): imgui_renderer3.render() canvas3.request_draw() if __name__ == "__main__": canvas1.request_draw(draw1) canvas2.request_draw(draw2) canvas3.request_draw(draw3) loop.run() .. _sphx_glr_download_gallery_imgui_multi_canvas.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: imgui_multi_canvas.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: imgui_multi_canvas.py ` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: imgui_multi_canvas.zip ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_