# 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:
```