<?xml version="1.0" encoding="UTF-8" ?> <class name="ImmediateMesh" inherits="Mesh" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> Mesh optimized for creating geometry manually. </brief_description> <description> A mesh type optimized for creating geometry manually, similar to OpenGL 1.x immediate mode. Here's a sample on how to generate a triangular face: [codeblocks] [gdscript] var mesh = ImmediateMesh.new() mesh.surface_begin(Mesh.PRIMITIVE_TRIANGLES) mesh.surface_add_vertex(Vector3.LEFT) mesh.surface_add_vertex(Vector3.FORWARD) mesh.surface_add_vertex(Vector3.ZERO) mesh.surface_end() [/gdscript] [csharp] var mesh = new ImmediateMesh(); mesh.SurfaceBegin(Mesh.PrimitiveType.Triangles); mesh.SurfaceAddVertex(Vector3.Left); mesh.SurfaceAddVertex(Vector3.Forward); mesh.SurfaceAddVertex(Vector3.Zero); mesh.SurfaceEnd(); [/csharp] [/codeblocks] [b]Note:[/b] Generating complex geometries with [ImmediateMesh] is highly inefficient. Instead, it is designed to generate simple geometry that changes often. </description> <tutorials> <link title="Using ImmediateMesh">$DOCS_URL/tutorials/3d/procedural_geometry/immediatemesh.html</link> </tutorials> <methods> <method name="clear_surfaces"> <return type="void" /> <description> Clear all surfaces. </description> </method> <method name="surface_add_vertex"> <return type="void" /> <param index="0" name="vertex" type="Vector3" /> <description> Add a 3D vertex using the current attributes previously set. </description> </method> <method name="surface_add_vertex_2d"> <return type="void" /> <param index="0" name="vertex" type="Vector2" /> <description> Add a 2D vertex using the current attributes previously set. </description> </method> <method name="surface_begin"> <return type="void" /> <param index="0" name="primitive" type="int" enum="Mesh.PrimitiveType" /> <param index="1" name="material" type="Material" default="null" /> <description> Begin a new surface. </description> </method> <method name="surface_end"> <return type="void" /> <description> End and commit current surface. Note that surface being created will not be visible until this function is called. </description> </method> <method name="surface_set_color"> <return type="void" /> <param index="0" name="color" type="Color" /> <description> Set the color attribute that will be pushed with the next vertex. </description> </method> <method name="surface_set_normal"> <return type="void" /> <param index="0" name="normal" type="Vector3" /> <description> Set the normal attribute that will be pushed with the next vertex. </description> </method> <method name="surface_set_tangent"> <return type="void" /> <param index="0" name="tangent" type="Plane" /> <description> Set the tangent attribute that will be pushed with the next vertex. </description> </method> <method name="surface_set_uv"> <return type="void" /> <param index="0" name="uv" type="Vector2" /> <description> Set the UV attribute that will be pushed with the next vertex. </description> </method> <method name="surface_set_uv2"> <return type="void" /> <param index="0" name="uv2" type="Vector2" /> <description> Set the UV2 attribute that will be pushed with the next vertex. </description> </method> </methods> </class>