cam.Start3D2D

From Garry's Mod
Jump to: navigation, search
 cam.Start3D2D( )

Contents

Description

Sets up a new 2D rendering context. Must be finished by cam.End3D2D.

NOTE

This is a function that starts a 2D rendering context.
This means that the only rendering functions will work after it are functions with a 2D rendering context.

NOTE

This is a rendering function that requires a 3D rendering context.
This means that it will only work in hooks with a 3D rendering context.

Arguments

Vector pos

Origin of the 3D2D context, ie. the top left corner, (0, 0).

Arguments

Angle angles

Angles of the 3D2D context.
+x in the 2d context corresponds to +x of the angle (its forward direction).
+y in the 2d context corresponds to -y of the angle (its right direction).

If (dx, dy) are your desired (+x, +y) unit vectors, the angle you want is dx:AngleEx(dx:Cross(-dy)).

Arguments

number scale

The scale of the render context.

If scale is 1 then 1 pixel in 2D context will equal to 1 unit in 3D context.

Examples

Example

hook.Add("PostDrawOpaqueRenderables", "example", function()
	local trace = LocalPlayer():GetEyeTrace()
	local angle = trace.HitNormal:Angle()
		
	render.DrawLine( trace.HitPos, trace.HitPos + 8 * angle:Forward(), Color( 255, 0, 0 ), true )
	render.DrawLine( trace.HitPos, trace.HitPos + 8 * -angle:Right(), Color( 0, 255, 0 ), true )
	render.DrawLine( trace.HitPos, trace.HitPos + 8 * angle:Up(), Color( 0, 0, 255 ), true )
		
	cam.Start3D2D( trace.HitPos, angle, 1 )
		surface.SetDrawColor( 255, 165, 0, 255 )
		surface.DrawRect( 0, 0, 8, 8 )
		render.DrawLine( Vector( 0, 0, 0 ), Vector( 8, 8, 8 ), Color( 100, 149, 237, 255 ), true )
	cam.End3D2D()
end )

Output:

cam.Start3D2D example 1.png
Personal tools
Navigation