Inherits: GeometryInstance < VisualInstance < CullInstance < Spatial < Node < Object

Draws simple geometry from code.


Draws simple geometry from code. Uses a drawing mode similar to OpenGL 1.x.

See also ArrayMesh, MeshDataTool and SurfaceTool for procedural geometry generation.

Note: ImmediateGeometry3D is best suited to small amounts of mesh data that change every frame. It will be slow when handling large amounts of mesh data. If mesh data doesn't change often, use ArrayMesh, MeshDataTool or SurfaceTool instead.

Note: Godot uses clockwise winding order for front faces of triangle primitive modes.

Note: In case of missing points when handling large amounts of mesh data, try increasing its buffer size limit under ProjectSettings.rendering/limits/buffers/immediate_buffer_size_kb.



add_sphere ( int lats, int lons, float radius, bool add_uv=true )


add_vertex ( Vector3 position )


begin ( PrimitiveType primitive, Texture texture=null )


clear ( )


end ( )


set_color ( Color color )


set_normal ( Vector3 normal )


set_tangent ( Plane tangent )


set_uv ( Vector2 uv )


set_uv2 ( Vector2 uv )

Method Descriptions

Simple helper to draw an UV sphere with given latitude, longitude and radius.

  • void add_vertex ( Vector3 position )

Adds a vertex in local coordinate space with the currently set color/uv/etc.

Begin drawing (and optionally pass a texture override). When done call end. For more information on how this works, search for glBegin() and glEnd() references.

For the type of primitive, see the PrimitiveType enum.

  • void clear ( )

Clears everything that was drawn using begin/end.

  • void end ( )

Ends a drawing context and displays the results.

  • void set_color ( Color color )

The current drawing color.

  • void set_normal ( Vector3 normal )

The next vertex's normal.

  • void set_tangent ( Plane tangent )

The next vertex's tangent (and binormal facing).

The next vertex's UV.

The next vertex's second layer UV.