Revision Difference
mesh.Begin#563604
<function name="Begin" parent="mesh" type="libraryfunc">
	<description>
		<warning>Maximum of 32768 vertices.</warning>⤶
		Starts constructing a new 3D mesh constructed from a given number of primitives in a given primitive format.
		The resulting mesh can be stored in an <page>IMesh</page> if it is intended to be drawn multiple times or on multiple frames.
	</description>
	<realm>Client</realm>
	<args name="Building a Dynamic Mesh">
		<arg name="primitiveType" type="number">
			An enum that indicates what the format of the mesh's primitives will be.  
			For a full list of the available options, see the <page>Enums/MATERIAL</page>.
		</arg>
		<arg name="primitiveCount" type="number">
			The quantity of primitives this mesh will contain as a whole integer number.
			The expected value of this argument is dependent on the primitive type used.  
			For a full list of the primitive counts expected by each primitive type, see <page>Enums/MATERIAL</page>. 
		</arg>
	</args>
	
	<args name="Building an IMesh">
		<arg name="mesh" type="IMesh">
			The <page>IMesh</page> that the created mesh will be stored in.
		</arg>
		<arg name="primitiveType" type="number">
			An enum that indicates what the format of the mesh's primitives will be.  
			For a full list of the available options, see the <page>Enums/MATERIAL</page>.
		</arg>
		<arg name="primitiveCount" type="number">
			The quantity of primitives this mesh will contain as a whole integer number.
			The expected value of this argument is dependent on the primitive type used.  
			For a full list of the primitive counts expected by each primitive type, see <page>Enums/MATERIAL</page>. 
		</arg>
	</args>
</function>
<example>
	<description>
		Draws a triangle near Vector( 0, 0, 0 ) in the map using a dynamic mesh, a dynamic mesh is good for animated meshes, or otherwise frequently changed rendered meshes.
	</description>
	<code>
local mat = Material( "editor/wireframe" ) -- The material (a wireframe)
local verts = { -- A table of 3 vertices that form a triangle
	{ pos = Vector( 0,  0,  0 ), u = 0, v = 0 }, -- Vertex 1
	{ pos = Vector( 10, 0,  0 ), u = 1, v = 0 }, -- Vertex 2
	{ pos = Vector( 10, 10, 0 ), u = 1, v = 1 }, -- Vertex 3
}
hook.Add( "PostDrawOpaqueRenderables", "MeshLibTest", function()
	render.SetMaterial( mat ) -- Apply the material
	mesh.Begin( MATERIAL_TRIANGLES, 1 ) -- Begin writing to the dynamic mesh
	for i = 1, #verts do
		mesh.Position( verts[i].pos ) -- Set the position
		mesh.TexCoord( 0, verts[i].u, verts[i].v ) -- Set the texture UV coordinates
		mesh.AdvanceVertex() -- Write the vertex
	end
	mesh.End() -- Finish writing the mesh and draw it
end )
	</code>
</example>
<example>
	<description>Draws a triangle near Vector( 0, 0, 0 ) in the map using a static mesh, that is, a mesh that is only created once, which is good for performance.
</description>
	<code>
local mat = Material( "editor/wireframe" ) -- The material (a wireframe)
local obj = Mesh() -- Create the IMesh object
local verts = { -- A table of 3 vertices that form a triangle
	{ pos = Vector( 0,  0,  0 ), u = 0, v = 0 }, -- Vertex 1
	{ pos = Vector( 10, 0,  0 ), u = 1, v = 0 }, -- Vertex 2
	{ pos = Vector( 10, 10, 0 ), u = 1, v = 1 }, -- Vertex 3
}
mesh.Begin( obj, MATERIAL_TRIANGLES, 1 ) -- Begin writing to the static mesh
for i = 1, #verts do
	mesh.Position( verts[i].pos ) -- Set the position
	mesh.TexCoord( 0, verts[i].u, verts[i].v ) -- Set the texture UV coordinates
	mesh.AdvanceVertex() -- Write the vertex
end
mesh.End() -- Finish writing to the IMesh
hook.Add( "PostDrawOpaqueRenderables", "MeshLibTest", function()
	render.SetMaterial( mat ) -- Apply the material
	obj:Draw() -- Draw the mesh
end )
	</code>
</example>
 Garry's Mod
			Garry's Mod 
		 Rust
			Rust 
		 Steamworks
			Steamworks 
		 Wiki Help
			Wiki Help