Describe the bug
using dxSetRenderTarget(...) clears the drawing quene when called in onClientPreRender event
this can also break the drawing of other resources too
To reproduce
local renderTarget = dxCreateRenderTarget(100, 100, true)
addEventHandler("onClientPreRender", root,
function()
dxDrawRectangle(10, 300, 100, 100) --> not drawn
dxDrawRectangle(110, 300, 100, 100) --> not drawn
dxDrawRectangle(210, 300, 100, 100) --> not drawn
dxSetRenderTarget(renderTarget, true)
dxSetRenderTarget()
dxDrawRectangle(10, 400, 100, 100) --> drawn
dxDrawRectangle(110, 400, 100, 100) --> drawn
dxDrawRectangle(210, 400, 100, 100) --> drawn
end
)
Expected behaviour
dxSetRenderTarget shouldn't clear the entire drawing quene when called in onClientPreRender
Version
Multi Theft Auto v1.5.8-release-20670
I cannot replicate. Code:
function render()
dxDrawRectangle(250, 200, 50, 50, 0xFF00FF00)-- Green
dxSetRenderTarget(renderTarget, true)
dxSetRenderTarget()
dxDrawRectangle(250, 250, 50, 50, 0xFFAAFF00)-- Lime Green
end
function prerender()
dxDrawRectangle(200, 200, 50, 50, 0xFFFF0000)-- Red
dxSetRenderTarget(renderTarget, true)
dxSetRenderTarget()
dxDrawRectangle(200, 250, 50, 50, 0xFFFFAA00)-- Orange
end
local renderTarget = dxCreateRenderTarget(50, 50, true)
addEventHandler("onClientRender", root, render)
addEventHandler("onClientPreRender", root, prerender)
Ingame:

I cannot replicate. Code:
function render() dxDrawRectangle(250, 200, 50, 50, 0xFF00FF00)-- Green dxSetRenderTarget(renderTarget, true) dxSetRenderTarget() dxDrawRectangle(250, 250, 50, 50, 0xFFAAFF00)-- Lime Green end function prerender() dxDrawRectangle(200, 200, 50, 50, 0xFFFF0000)-- Red dxSetRenderTarget(renderTarget, true) dxSetRenderTarget() dxDrawRectangle(200, 250, 50, 50, 0xFFFFAA00)-- Orange end local renderTarget = dxCreateRenderTarget(50, 50, true) addEventHandler("onClientRender", root, render) addEventHandler("onClientPreRender", root, prerender)
because your renderTarget is a nil value
you can't define a local variable after the functions
or it is invisible for the functions
Can confirm with the above code fixed:
Code
local renderTarget = dxCreateRenderTarget(50, 50, true)
function render()
dxDrawRectangle(250, 200, 50, 50, 0xFF00FF00)-- Green
dxSetRenderTarget(renderTarget, true)
dxSetRenderTarget()
dxDrawRectangle(250, 250, 50, 50, 0xFFAAFF00)-- Lime Green
end
function prerender()
dxDrawRectangle(200, 200, 50, 50, 0xFFFF0000)-- Red
dxSetRenderTarget(renderTarget, true)
dxSetRenderTarget()
dxDrawRectangle(200, 250, 50, 50, 0xFFFFAA00)-- Orange
end
addEventHandler("onClientRender", root, render)
addEventHandler("onClientPreRender", root, prerender)

The red rectangle is missing from the top left corner section.
I'll look into the issue. Im lazy.
Most helpful comment
because your renderTarget is a nil value
you can't define a local variable after the functions
or it is invisible for the functions