HU/dxCreateRenderTarget

From Multi Theft Auto: Wiki
Revision as of 18:05, 17 October 2018 by Surge (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

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