Description
Pushes the current render target and viewport to the RT stack then sets a new current render target and viewport. If the viewport is not specified, the dimensions of the render target are used instead.
This is similar to a call to render.SetRenderTarget and render.SetViewPort where the current render target and viewport have been saved beforehand, except the viewport isn't clipped to screen bounds.
See also render.PopRenderTarget.
If you want to render to the render target in 2d mode and it is not the same size as the screen, use
cam.Start2D and
cam.End2D.
If the render target is bigger than the screen, rendering done with the surface library will be clipped to the screen bounds unless you call
DisableClippingArguments
1 ITexture texture = nilThe new render target to be used.
Can be set to nil
to push the main game frame buffer.
2 number x = 0X origin of the viewport.
3 number y = 0Y origin of the viewport.
4 number w = texture:Width()Width of the viewport.
5 number h = texture:Height()Height of the viewport
Example
Shows how to create a material which uses a custom created Render Target texture.
local exampleRT
= GetRenderTarget(
"example_rt",
1024,
1024 )
render.
PushRenderTarget( exampleRT )
cam.
Start2D()
surface.
SetDrawColor(
0,
0,
0,
255 )
surface.
DrawRect(
0,
0,
1024,
1024 )
surface.
SetDrawColor(
255,
0,
0,
255 )
surface.
DrawRect(
0,
0,
256,
256 )
cam.
End2D()
render.
PopRenderTarget()
local customMaterial
= CreateMaterial(
"example_rt_mat",
"UnlitGeneric",
{
["$basetexture"] = exampleRT:
GetName(),
["$translucent"] = 1,
["$vertexcolor"] = 1
} )
hook.
Add(
"HUDPaint",
"ExampleDraw",
function()
surface.
SetDrawColor(
255,
255,
255,
255 )
surface.
SetMaterial( customMaterial )
surface.
DrawTexturedRect(
0,
0,
customMaterial:
GetTexture(
"$basetexture" ):
Width(),
customMaterial:
GetTexture(
"$basetexture" ):
Height() )
end )
Output: A black 1024x1024 render target with a 256x256 red square in top left corner drawn in your top left corner.
Example
Shows how you can use alpha channel with render targets.