HU/dxCreateRenderTarget

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Ez a function létrehoz egy render target elemet, amely egy speciális típusú textúra, amely a dx függvényekkel rajzolható le. A sikeres render target létrehozása nem garantált, a hardver vagy a memória korlátai miatt hibák lehetnek.

Használja a dxGetStatus-t a hibák megtalálásához. (Ha a VideoMemoryFreeForMTA nulla, akkor a hiba garantált.)

[[{{{image}}}|link=|]] Tipp: Használja a dxSetBlendMode, hogy jobb minőséget kapjon
[[{{{image}}}|link=|]] Tipp: Nagyon ajánlott a dxSetTestMode használata, amikor a dxCreateRenderTarget-t használva írunk és tesztelünk scripteket.
[[{{{image}}}|link=|]] Megjegyzés: Render target-ek általában törlődnek, amikor a játékos minimalizálja az MTA-t (alt-tab). Lásd a onClientRestore-t a rögzített tartalmak visszaállításának részleteiről.

Szintaxis

element dxCreateRenderTarget ( int width, int height [, bool withAlpha = false ] )

OOP Syntax Help! I don't understand this!

Method: DxRenderTarget(...)


Kötelező paraméterek

  • width : A textúra szélessége pixelben.
  • height : A textúra magassága pixelben.
  • withAlpha: The render target will be created with an alpha channel. 'false' will turn images' alpha channels to black color

Visszatérési érték

Visszaad egy textúra elemet, ha sikeres, false, ha a rendszernek nem sikerül létrehoznia a render target-et.

Mindig ellenőrizze, hogy ez a function false értéked ad-e vissza.

Magyarázat

Mi az a rendertarget? A rendertarget olyan, mint egy nagy, fehér papír (vagy, ha az alpha-t true-ra állítja, egy átlátszó papír lesz) amire rajzolhat, miután rajzolt rajta, annyiszor rajzolhat még, amennyiszer csak szeretne, teljesítmény befolyásolás nélkül. Használhatja dashboard-hoz is, ahol több száz dxDraw* functions van meghívva, szóval, ahelyett hogy az összes frame-t meghívná, lerajzolhatja egy render target-en, és minden egyes információ helyett csak lerajzolja a render target-et.

Példa

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 )                     -- Start drawing on myRenderTarget
            dxDrawText ( "Hello", 10, 20 )                          -- Draw a message
            dxSetRenderTarget()                                     -- Stop drawing on myRenderTarget

            dxDrawImage( 50,  50,  100, 100, myRenderTarget )       -- Now use myRenderTarget as a material and draw it lots of times
            dxDrawImage( 150, 350, 150, 100, myRenderTarget )
            dxDrawImage( 250, 250, 100, 150, myRenderTarget )
            dxDrawImage( 350, 30,  150, 150, myRenderTarget )
        end
    end
)

local myRenderTarget = dxCreateRenderTarget(500, 500, true)

--
-- Function to draw text to our render target with '''modulate_add''' blend mode when the 'r' key is pressed
--
function updateRenderTarget()
    dxSetRenderTarget(myRenderTarget, true)
    dxSetBlendMode("modulate_add")  -- Set 'modulate_add' when drawing stuff on the render target

    dxDrawText("Testing "..getTickCount(), 0, 0, 0, 0, tocolor(255, 255, 255, 255), 2, "clear")

    dxSetBlendMode("blend")         -- Restore default blending
    dxSetRenderTarget()             -- Restore default render target
end
bindKey("r", "down", updateRenderTarget )

Lásd még

Fordította