Zaloguj się by uzyskać pełen dostęp. Nie masz jeszcze konta? Założ je już teraz w kilka sekund.

Wysłany: 2020-04-07, 15:15


Maniekxx

Amator






Wiek: 24
Na forum: 3035 dni
Posty: 232
Nick w MP: Maniekxx

Piwa: 225

Respekt: 110
Respekt: 110

Ostrzeżeń: 20%
Witam, pr?bowa?em ostatnio stworzy? tablice 3D, u?y?em do tego p?tli lecz niestety pojawi?y si? 2 b??dy.

1. Gdy u?ywam dxCreateRenderTarget w osobnym evencie tablice tworz? si? 2 lecz posiadaj? te same napisy.

2. Natomiast gdy dxCreateRenderTarget jest u?yty w p?tli tablice r?wnie? tworz? si? 2 z osobnymi ju? napisami, lecz powoduj? du?e spadki FPS i po chwili znikaj?.

Jest jaki? spos?b na naprawienie tego b??du lub ewentualnie stworzenie tego zasobu z wykorzystaniem innych funkcji, czy mo?e lepiej nie robi? takich rzeczy poniewa? mog? powodowa? du?e obci??enie?

Zas?b:


addEventHandler("onClientResourceStart", resourceRoot,
    function()
        --myRenderTarget = dxCreateRenderTarget(800, 1460)
    end
)

function getPositionFromElementOffset(element,offX,offY,offZ)
    local m = getElementMatrix ( element )
    local x = offX * m[1][1] + offY * m[2][1] + offZ * m[3][1] + m[4][1]
    local y = offX * m[1][2] + offY * m[2][2] + offZ * m[3][2] + m[4][2]
    local z = offX * m[1][3] + offY * m[2][3] + offZ * m[3][3] + m[4][3]
    return x, y, z
end


addEventHandler('onClientResourceStart', root, function()

    if state ~= 1 then
        addEventHandler('onClientRender', root, tablica3d)
        state = 1
    end
end)

local tbl={

    {1473.67,-1767.28,18.80+1,"Test",800,1460},
    {1477.44,-1766.86,18.80+1,"Test2",800,1460},

}

function tablica3d()
    for i,v in ipairs(tbl) do

    myRenderTarget = dxCreateRenderTarget(v[5], v[6])
    dxSetRenderTarget(myRenderTarget)
    dxDrawText(v[4] , 1, 0, 800, 250, tocolor( 255, 255, 255, alpha ), 3, 'sans', 'center', 'center', true, true )

    dxSetRenderTarget()
    local tablica=dxDrawMaterialLine3D(v[1] - 0.08, v[2], v[3] + 0.7, v[1] - 0.08, v[2], v[3] - 1.7, myRenderTarget, 2, tocolor(255,255,255,255), v[1], v[2]-50, v[3] + 1 )
end
end


Postaw piwo autorowi tego posta
 

 
Wysłany: 2020-04-07, 16:23


Kuks*







Wiek: 15
Na forum: 3171 dni
Posty: 246
Nick w MP: Kuks*

Piwa: 2209

Respekt: 115,8
Respekt: 115,8

Maniekxx, dxCreateRenderTarget nie powinno by? w onClientRender, przez to masz spadki FPS, po chwili brak vramu, przez co znika.

Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 1 piw(a):
Maniekxx
Wysłany: 2020-04-07, 16:37


Maniekxx

Amator






Wiek: 24
Na forum: 3035 dni
Posty: 232
Nick w MP: Maniekxx

Piwa: 225

Respekt: 110
Respekt: 110

Ostrzeżeń: 20%
Kuks*, Rozumiem, lecz w przeciwnym wypadku ten sam tekst pojawia si? na ka?dej tablicy, gdy umieszcz? dxCreateRenderTarget przyk?adowo w evencie onClientResourceStart, jest jaki? spos?b aby to naprawi??

Postaw piwo autorowi tego posta
 

 
Wysłany: 2020-04-07, 18:01


Kuks*







Wiek: 15
Na forum: 3171 dni
Posty: 246
Nick w MP: Kuks*

Piwa: 2209

Respekt: 115,8
Respekt: 115,8

Maniekxx, Do ka?dej tablicy mo?na zrobi? inny render target

Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 1 piw(a):
Maniekxx
Wysłany: 2020-04-07, 19:53


Maniekxx

Amator






Wiek: 24
Na forum: 3035 dni
Posty: 232
Nick w MP: Maniekxx

Piwa: 225

Respekt: 110
Respekt: 110

Ostrzeżeń: 20%
Kuks*, Zrobi?em to teraz w taki spos?b, spadki FPS ju? nie wyst?puj? jednak?e tablica nadal po chwili znika, jak ju? wcze?niej wspomnia?em, gdy utworz? j? w innym evencie wtedy na ka?dej tablicy pojawia si? ten sam tekst.


function getPositionFromElementOffset(element,offX,offY,offZ)
    local m = getElementMatrix ( element )
    local x = offX * m[1][1] + offY * m[2][1] + offZ * m[3][1] + m[4][1]
    local y = offX * m[1][2] + offY * m[2][2] + offZ * m[3][2] + m[4][2]
    local z = offX * m[1][3] + offY * m[2][3] + offZ * m[3][3] + m[4][3]
    return x, y, z
end


addEventHandler('onClientResourceStart', root, function()

    if state ~= 1 then
        addEventHandler('onClientRender', root, tablica3d)
        state = 1
    end
end)

local tbl={

    {1473.67,-1767.28,18.80+1,"Test",800,1460},
    {1477.44,-1766.86,18.80+1,"Test2",800,1460},

}

function tablica()
    myRenderTarget = dxCreateRenderTarget(800, 1460)
end

function tablica3d()
    tablica()
    for i,v in ipairs(tbl) do
    if myRenderTarget then
    dxSetRenderTarget(myRenderTarget)
    dxDrawText(v[4] , 1, 0, 800, 250, tocolor( 255, 255, 255, alpha ), 3, 'sans', 'center', 'center', true, true )

    dxSetRenderTarget()
    local tablica=dxDrawMaterialLine3D(v[1] - 0.08, v[2], v[3] + 0.7, v[1] - 0.08, v[2], v[3] - 1.7, myRenderTarget, 2, tocolor(255,255,255,255), v[1], v[2]-50, v[3] + 1 )
        end
    end
end


Wygl?da to tak:


Napisy nak?adaj? si? na siebie, a chcia?bym aby na ka?dej tablicy by? inny napis z tablicy.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2020-04-07, 20:13


Kuks*







Wiek: 15
Na forum: 3171 dni
Posty: 246
Nick w MP: Kuks*

Piwa: 2209

Respekt: 115,8
Respekt: 115,8

Po pierwsze nie mo?esz u?ywa? funkcji tablica w onClientRender, bo po chwili napisy znikn? z powodu braku v-ramu.

Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 1 piw(a):
Maniekxx
Wysłany: 2020-04-07, 20:21


Maniekxx

Amator






Wiek: 24
Na forum: 3035 dni
Posty: 232
Nick w MP: Maniekxx

Piwa: 225

Respekt: 110
Respekt: 110

Ostrzeżeń: 20%
Ale gdy wywo?uj? j? np z

 addEventHandler('onClientResourceStart', root, function()

    if state ~= 1 then
        addEventHandler('onClientRender', root, tablica3d)
       tablica()
        state = 1
    end
end)


To wtedy w?asnie te napisy nak?adaj? si? na siebie, i tablica nie znika. Gdy wywo?uje j? natomiast z funkcji tablica3d to napisy s? na ka?dej inne, lecz po chwili znikaj? wraz z ca?? tablic?. Nie patrz na SS bo on ukazuje tylko b??d jaki wyst?puje w przypadku dodania funkcji tablica() do eventu onClientResourceStart.

W skr?cie, je?li wywo?uje tablica() z funkcji tablica3d to dzia?a ale po chwili wszystko znika.

Gdy robi? to w funkcji onClientResourceStart tablice nie znikaj? lecz tekst si? na siebie nak?ada tak jak w przypadku przedstawionego SS.

Nie do ko?ca wiem jak zrobi? aby te tablice dzia?a?y poprawnie :/
Warunkiem tego aby tekst wy?wietla? si? na obydw?ch tablicach jest to aby wywo?ywanie funkcji tablica() znajdywa?o si? wewn?trz p?tli.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2020-04-08, 14:55


Kuks*







Wiek: 15
Na forum: 3171 dni
Posty: 246
Nick w MP: Kuks*

Piwa: 2209

Respekt: 115,8
Respekt: 115,8

Napisa?em dla Ciebie prosty przyk?ad u?ycia, tekst na ka?dym rt b?dzie inny.

local rendery = {
    {rt = dxCreateRenderTarget(250, 200, true), text = "Siema! TEST 1 1 1 1 1s", pos = {-2401.27197, -603.20117, 133.16272}},
    {rt = dxCreateRenderTarget(250, 200, true), text = "Siema1", pos = {-2414.69971, -614.00775, 132.60869}},
}

addEventHandler("onClientRender", root, function()
    for i, v in ipairs(rendery) do
        dxSetRenderTarget(v.rt)
        dxDrawText(v['text'], 0, 0, 250, 200, tocolor(255, 255, 255), 1, "default", "center", "center")
        dxSetRenderTarget()
        dxDrawMaterialLine3D(v.pos[1], v.pos[2], v.pos[3]+2, v.pos[1], v.pos[2], v.pos[3], v.rt, 2)
    end
end)


Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 1 piw(a):
Maniekxx
Wysłany: 2020-04-08, 20:55


Maniekxx

Amator






Wiek: 24
Na forum: 3035 dni
Posty: 232
Nick w MP: Maniekxx

Piwa: 225

Respekt: 110
Respekt: 110

Ostrzeżeń: 20%
Dzi?kuje, teraz wszystko dzia?a poprawnie :) Mo?na zamkn?? temat.

Postaw piwo autorowi tego posta
 

 
Tagi: tablice
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » LUA Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi

Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Dodaj temat do Ulubionych
Wersja do druku