# Triangle [Play Demo](/demos/start_triangle.html) The simplest possible SimVX example. Override `draw()` on a Node2D to render a coloured triangle using immediate-mode draw commands. ## What You Will Learn - **Node2D subclass** -- Create a custom node by subclassing `Node2D` - **draw() override** -- Render shapes every frame via the `renderer` parameter - **draw_polygon()** -- Fill an arbitrary polygon with a solid colour - **draw_text()** -- Render text at a given position - **App** -- Launch a window and run a scene with `App.run()` ## How It Works `Triangle` extends `Node2D` and overrides `draw(renderer)`. Each frame the renderer calls `draw()` and the node issues draw commands: 1. `draw_polygon()` takes a list of `(x, y)` vertices and a colour tuple 2. `draw_text()` renders a string at a screen position with optional scale The `App` creates a Vulkan-backed window and runs the scene tree containing our single `Triangle` node. ## Source Code ```{literalinclude} ../../packages/graphics/examples/start_triangle.py :language: python :linenos: ```