Wysłany: 2020-04-07, 15:15
Maniekxx
Amator
Wiek: 24 Na forum: 2894 dni Posty: 232
Nick w MP: Maniekxx
Piwa : 225
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
Wysłany: 2020-04-07, 16:23
Kuks*
Wiek: 15 Na forum: 3030 dni Posty: 246
Nick w MP: Kuks*
Piwa : 2208
Maniekxx , dxCreateRenderTarget nie powinno by? w onClientRender, przez to masz spadki FPS, po chwili brak vramu, przez co znika.
Więcej szczegółów
Wystawiono 1 piw(a):Maniekxx
Wysłany: 2020-04-07, 16:37
Maniekxx
Amator
Wiek: 24 Na forum: 2894 dni Posty: 232
Nick w MP: Maniekxx
Piwa : 225
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??
Wysłany: 2020-04-07, 18:01
Kuks*
Wiek: 15 Na forum: 3030 dni Posty: 246
Nick w MP: Kuks*
Piwa : 2208
Maniekxx , Do ka?dej tablicy mo?na zrobi? inny render target
Więcej szczegółów
Wystawiono 1 piw(a):Maniekxx
Wysłany: 2020-04-07, 19:53
Maniekxx
Amator
Wiek: 24 Na forum: 2894 dni Posty: 232
Nick w MP: Maniekxx
Piwa : 225
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.
Wysłany: 2020-04-07, 20:13
Kuks*
Wiek: 15 Na forum: 3030 dni Posty: 246
Nick w MP: Kuks*
Piwa : 2208
Po pierwsze nie mo?esz u?ywa? funkcji tablica w onClientRender, bo po chwili napisy znikn? z powodu braku v-ramu.
Więcej szczegółów
Wystawiono 1 piw(a):Maniekxx
Wysłany: 2020-04-07, 20:21
Maniekxx
Amator
Wiek: 24 Na forum: 2894 dni Posty: 232
Nick w MP: Maniekxx
Piwa : 225
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.
Wysłany: 2020-04-08, 14:55
Kuks*
Wiek: 15 Na forum: 3030 dni Posty: 246
Nick w MP: Kuks*
Piwa : 2208
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 )
Więcej szczegółów
Wystawiono 1 piw(a):Maniekxx
Wysłany: 2020-04-08, 20:55
Maniekxx
Amator
Wiek: 24 Na forum: 2894 dni Posty: 232
Nick w MP: Maniekxx
Piwa : 225
Dzi?kuje, teraz wszystko dzia?a poprawnie Mo?na zamkn?? temat.
Tagi: tablice
Anonymous
Na forum: 245 dni
Posty: 1
Anonymous Koniecznie zajrzyj na: