mesh.Begin

From Garry's Mod
Jump to: navigation, search
 mesh.Begin( )

Contents

Description

Starts a new dynamic mesh. If an IMesh is passed, it will use that mesh instead.

Arguments

IMesh mesh=nil

Mesh to build. This argument can be removed if you wish to build a "dynamic" mesh. See examples below.

Arguments

number primitiveType

Primitive type, see MATERIAL_ Enums.

Arguments

number primiteCount

The amount of primitives.

Examples

Example

Draws a triangle near Vector( 0, 0, 0 ) in the map using a dynamic mesh.

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 )


Examples

Example

Draws a triangle near Vector( 0, 0, 0 ) in the map using a static mesh.

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 )


Personal tools
Navigation