Garry's Mod Wiki

cam.PushModelMatrix

cam.PushModelMatrix

cam.PushModelMatrix( VMatrix matrix, boolean multiply = false )

Description

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

This does not work with cam.Start3D2D if multiply is false.

Arguments

1 VMatrix matrix
The matrix to push.
2 boolean multiply = false
If set, multiplies given matrix with currently active matrix (cam.GetModelMatrix) before pushing.

Example

Rotates and scales text in the center of the screen.

local custom_vector = Vector( 1, 1, 1 ) hook.Add("HUDPaint", "2d rotation test", function() local w, h = ScrW(), ScrH() local t = RealTime() * 50 local m = Matrix() local center = Vector( w / 2, h / 2 ) m:Translate( center ) m:Rotate( Angle( 0, t, 0 ) ) m:Scale( custom_vector * math.sin( t / 100 ) * 10 ) m:Translate( -center ) cam.PushModelMatrix( m ) surface.SetFont( "DermaDefault" ) surface.SetTextColor( 255, 255, 255, 255 ) surface.SetTextPos( w / 2, h / 2 ) surface.DrawText( "LOLLOLOLOL" ) cam.PopModelMatrix() end)

Example

Simple function to draw rotated text.

function draw.RotatedText( text, x, y, font, color, ang) render.PushFilterMag( TEXFILTER.ANISOTROPIC ) render.PushFilterMin( TEXFILTER.ANISOTROPIC ) local m = Matrix() m:Translate( Vector( x, y, 0 ) ) m:Rotate( Angle( 0, ang, 0 ) ) surface.SetFont( font ) local w, h = surface.GetTextSize( text ) m:Translate( -Vector( w / 2, h / 2, 0 ) ) cam.PushModelMatrix( m ) draw.DrawText( text, font, 0, 0, color ) cam.PopModelMatrix() render.PopFilterMag() render.PopFilterMin() end

Special Pages


Wikis

?

Render Time: 80ms

DB GetPage 48
Generate Html 6
SaveChanges (1) 18
Render Body 0
Render Sidebar 6