DxSetRenderTarget: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
(Created page with "{{Client function}} __NOTOC__ {{New feature|3.0110|1.1| Only available in 1.1 }} This function changes the drawing destination for the dx functions. It can be used to select a pr...")
 
No edit summary
 
(14 intermediate revisions by 5 users not shown)
Line 1: Line 1:
{{Client function}}
{{Client function}}
__NOTOC__
__NOTOC__
{{New feature|3.0110|1.1|
Only available in 1.1
}}
This function changes the drawing destination for the dx functions. It can be used to select a previously created render target, or if called with no arguments, restore drawing directly to the screen.
This function changes the drawing destination for the dx functions. It can be used to select a previously created render target, or if called with no arguments, restore drawing directly to the screen.


==Syntax==  
==Syntax==  
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
bool dxSetShaderRenderTarget ( [element renderTarget] )
bool dxSetRenderTarget ( [ element renderTarget, bool clear = false ] )
</syntaxhighlight>  
</syntaxhighlight>  
If no arguments are supplied, the screen is restored as the drawing destination.
{{OOP||[[texture|rendertarget]]:setAsTarget}}


===Optional Arguments===  
===Optional Arguments===  
*'''renderTarget:''' The render target element whose pixels we want to draw on.
*'''renderTarget:''' The render target element whose pixels we want to draw on.
If no arguments are supplied, the screen is restored as the drawing destination.
*'''clear:''' If set to true, the render target will also be cleared.


===Returns===
===Returns===
Returns ''true'' if the render target was successfully changed, ''false'' otherwise.
Returns ''true'' if the render target was successfully changed, ''false'' otherwise.
==Usage restrictions==
*Items drawn with ''postGUI'' set to ''true'' will not appear on a custom render target.
{{Deprecated feature|3.0131|1.3.0-9.04431|
*dxSetRenderTarget can only be called during the [[onClientRender]], [[onClientHUDRender]] and [[onClientRestore]] events.
}}
{{New_feature|3.0131|1.3.0-9.04431|
*dxSetRenderTarget can be set at any time as long as <min_mta_version> in [[meta.xml]] is set to at least 1.3.0-9.04431 e.g. '''<min_mta_version client<nowiki>=</nowiki>"1.3.0-9.04431" />'''
}}


==Example==  
==Example==  
Line 30: Line 40:
         if myRenderTarget then
         if myRenderTarget then
             dxSetRenderTarget( myRenderTarget )  -- Select custom render target
             dxSetRenderTarget( myRenderTarget )  -- Select custom render target
             dxDrawText ( "Hello", 10, 20 )      -- This will be drawn on myRenderTarget
             dxDrawText ( "Hello", 10, 20 )      -- The message 'Hello' will be drawn on myRenderTarget


             dxSetRenderTarget()                  -- Select default render target
             dxSetRenderTarget()                  -- Select default render target
             dxDrawText ( "Hello", 10, 20 )       -- This will be drawn directly to the screen
             dxDrawText ( "Goodbye", 10, 20 )     -- The message 'Goodbye' will be drawn directly to the screen
         end
         end
     end
     end
)
)
</syntaxhighlight>
</syntaxhighlight>
This example shows how you can prepare render target contents at anytime (from client version 1.3.0-9.04431)
<syntaxhighlight lang="lua">
addEventHandler("onClientResourceStart", resourceRoot,
    function()
        myRenderTarget = dxCreateRenderTarget( 80, 100 )    -- Create a render target texture which is 80 x 100 pixels
        dxSetRenderTarget( myRenderTarget )                  -- Select custom render target for drawing
        dxDrawRectangle ( 2, 2, 60, 60, tocolor(255,255,0) ) -- Draw anything you like (to the render target)
        dxDrawText ( "Hello", 10, 20 )
        dxDrawText ( "This is", 10, 40 )
        dxDrawText ( "Amazing", 10, 60 )
        dxSetRenderTarget()                                  -- Unselect custom render target
    end
)
addEventHandler( "onClientRender", root,
    function()
        if myRenderTarget then
            dxDrawImage ( 100, 200, 80, 100, myRenderTarget )        -- Draw myRenderTarget content to the screen
        end
    end
)
</syntaxhighlight>
==Changelog==
{{ChangelogHeader}}
{{ChangelogItem|1.3.0-9.04431|Removed restrictions on when dxSetRenderTarget could be called}}


==See Also==
==See Also==
{{Drawing_functions}}
{{Drawing_functions}}
[[hu:dxSetRenderTarget]]

Latest revision as of 20:40, 23 December 2018

This function changes the drawing destination for the dx functions. It can be used to select a previously created render target, or if called with no arguments, restore drawing directly to the screen.

Syntax

bool dxSetRenderTarget ( [ element renderTarget, bool clear = false ] )

If no arguments are supplied, the screen is restored as the drawing destination.


OOP Syntax Help! I don't understand this!

Method: rendertarget:setAsTarget(...)


Optional Arguments

  • renderTarget: The render target element whose pixels we want to draw on.
  • clear: If set to true, the render target will also be cleared.

Returns

Returns true if the render target was successfully changed, false otherwise.

Usage restrictions

  • Items drawn with postGUI set to true will not appear on a custom render target.
  • dxSetRenderTarget can be set at any time as long as <min_mta_version> in meta.xml is set to at least 1.3.0-9.04431 e.g. <min_mta_version client="1.3.0-9.04431" />

Example

addEventHandler("onClientResourceStart", resourceRoot,
    function()
        myRenderTarget = dxCreateRenderTarget( 80, 100 )  -- Create a render target texture which is 80 x 100 pixels
    end
)

addEventHandler( "onClientRender", root,
    function()
        if myRenderTarget then
            dxSetRenderTarget( myRenderTarget )  -- Select custom render target
            dxDrawText ( "Hello", 10, 20 )       -- The message 'Hello' will be drawn on myRenderTarget

            dxSetRenderTarget()                  -- Select default render target
            dxDrawText ( "Goodbye", 10, 20 )     -- The message 'Goodbye' will be drawn directly to the screen
        end
    end
)


This example shows how you can prepare render target contents at anytime (from client version 1.3.0-9.04431)

addEventHandler("onClientResourceStart", resourceRoot,
    function()
        myRenderTarget = dxCreateRenderTarget( 80, 100 )     -- Create a render target texture which is 80 x 100 pixels
        dxSetRenderTarget( myRenderTarget )                  -- Select custom render target for drawing
        dxDrawRectangle ( 2, 2, 60, 60, tocolor(255,255,0) ) -- Draw anything you like (to the render target)
        dxDrawText ( "Hello", 10, 20 )
        dxDrawText ( "This is", 10, 40 )
        dxDrawText ( "Amazing", 10, 60 )
        dxSetRenderTarget()                                  -- Unselect custom render target
    end
)

addEventHandler( "onClientRender", root,
    function()
        if myRenderTarget then
            dxDrawImage ( 100, 200, 80, 100, myRenderTarget )        -- Draw myRenderTarget content to the screen
        end
    end
)

Changelog

Version Description
1.3.0-9.04431 Removed restrictions on when dxSetRenderTarget could be called

See Also