cam/PushModelMatrix

From Garry's Mod
(Difference between revisions)
Jump to: navigation, search
Line 12: Line 12:
 
|type=boolean
 
|type=boolean
 
|name=multiply
 
|name=multiply
|desc={{NextUpdate}}If set, multiplies given matrix with currently active matrix ({{LibraryFunction|cam|GetModelMatrix}}) before pushing.
+
|desc=If set, multiplies given matrix with currently active matrix ({{LibraryFunction|cam|GetModelMatrix}}) before pushing.
 
|default=false
 
|default=false
 
}}
 
}}

Revision as of 16:09, 21 January 2020

 cam.PushModelMatrix( )

Contents

Description

Pushes the specified matrix onto the render matrix stack. Unlike opengl, this will replace the current model matrix.

Arguments

VMatrix matrix

The matrix to push.

Arguments

boolean multiply=false

If set, multiplies given matrix with currently active matrix (cam.GetModelMatrix) before pushing.

Examples

Example

Rotates and scales text in the center of the screen.

hook.Add("HUDPaint", "2d rotation test", function()
	local w, h = ScrW(), ScrH()
	local t = RealTime()*50
	
	local mat = Matrix()

	mat:Translate(Vector(w/2, h/2))
	mat:Rotate(Angle(0,t,0))
	mat:Scale(Vector(1,1,1) * math.sin(t/100) *10)
	mat:Translate(-Vector(w/2, h/2))

	cam.PushModelMatrix(mat)
		surface.SetFont("DermaDefault")
		surface.SetTextColor(255, 255, 255, 255)
		surface.SetTextPos(w/2, h/2)
		surface.DrawText("LOLLOLOLOL")
	cam.PopModelMatrix()	
end)


Examples

Example

Simple function to draw rotated text

function draw.TextRotated(text, x, y, color, font, ang)
	render.PushFilterMag(TEXFILTER.ANISOTROPIC)
	render.PushFilterMin(TEXFILTER.ANISOTROPIC)
	surface.SetFont(font)
	surface.SetTextColor(color)
	surface.SetTextPos(0, 0)
	local textWidth, textHeight = surface.GetTextSize( text )
	local rad = -math.rad( ang )
	x = x - ( math.cos( rad ) * textWidth / 2 + math.sin( rad ) * textHeight / 2 )
	y = y + ( math.sin( rad ) * textWidth / 2 + math.cos( rad ) * textHeight / 2 )
	local m = Matrix()
	m:SetAngles(Angle(0, ang, 0))
	m:SetTranslation(Vector(x, y, 0))
	cam.PushModelMatrix(m)
		surface.DrawText(text)
	cam.PopModelMatrix()
	render.PopFilterMag()
	render.PopFilterMin()
end


Personal tools
Navigation