Garry's Mod Wiki

Revision Difference

render.Capture#524910

<function name="Capture" parent="render" type="libraryfunc"> <description> Captures a part of the current render target and returns the data as a binary string in the given format. Since the pixel buffer clears itself every frame, this will return a black screen outside of . To capture the user's final view, use <page>GM:PostRender</page>. This will not capture the Steam overlay or third-party injections (such as the Discord overlay, Overwolf, and advanced cheats) on the user's screen. <bug issue="2571">This sets the alpha channel incorrectly in PNG mode, causing the foreground to be rendered almost completely transparent.</bug> </description> <realm>Client</realm> <args> <arg name="captureData" type="table">Parameters of the capture. See <page>Structures/RenderCaptureData</page>.</arg> </args> <rets> <ret name="" type="string">binaryData</ret> </rets> </function> <example> <description>How you could use this to save a picture of your screen.</description> <code> local ScreenshotRequested = false function RequestAScreenshot() ScreenshotRequested = true end -- For the sake of this example, we use a console command to request a screenshot concommand.Add( "make_screenshot", RequestAScreenshot ) hook.Add( "PostRender", "example_screenshot", function() if ( !ScreenshotRequested ) then return end ScreenshotRequested = false local data = render.Capture( { format = "jpeg", quality = 70, //100 is max quality, but 70 is good enough. h = ScrH(),⤶ w = ScrW(),⤶ x = 0, y = 0, w = ScrW(),⤶ h = ScrH()⤶ } ) local f = file.Open( "Image.jpg", "wb", "DATA" ) f:Write( data ) f:Close() end ) </code> <output>You should now have Image.jpg in your garrysmod/garrysmod/data folder, containing a screenshot.</output> </example>