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 <page>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,⤶
} )⤶
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>