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>