Garry's Mod Wiki

Revision Difference

render.Capture#513004

<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 &lt;page&gt;RenderCaptureData&lt;/page&gt;.</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,⤶ } )⤶ 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>