botshara Posted April 19, 2018 Share Posted April 19, 2018 Hello! Im getting a huge fps drop when I use xmlNodeGetValue in dxDrawText. From 60 fps to 7 fps. Here is my code example. Btw I use library to make GUIs. xmlRules = xmlLoadFile( "commands/rules.xml" ) function testMyGui() help_window = interface:dxCreateWindow(x, y, width, height, tocolor(0, 0, 0, 125), false, "Help panel", (35/1080)*sy, tocolor(0, 0, 0, 225), tocolor(255, 255, 255, 255), nil) interface:dxAddBorder(help_window, "bottom", tocolor(255, 102, 255), 1) interface:setActiveGUI(help_window) interface:dxSetMovable(help_window, true) local tabPanel = interface:dxCreateTabPanel(0.025, 0.15, 0.95, 0.8, width*0.1521, true, help_window, tocolor(0, 0, 0, 125)) local tabRules = interface:dxCreateTab(tabPanel, "Rules", tocolor(0, 0, 0, 125), nil, tocolor(255, 255, 255, 255)) local RulesBox = interface:dxCreateTextWindow(0.025, 0.05, 0.95, 0.9, true, tabRules, tocolor(0, 0, 0, 100), tocolor(255,0,0,255), tocolor(0,255,0,255), false) interface:dxTextWindowAddText(RulesBox, xmlNodeGetValue( xmlRules ), tocolor(255, 255, 255, 255)) local tabOverview = interface:dxCreateTab(tabPanel, "Command usage", tocolor(0, 0, 0, 125), nil, tocolor(255, 255, 255, 255)) local tabCommands = interface:dxCreateTab(tabPanel, "All comannds", tocolor(0, 0, 0, 125), nil, tocolor(255, 255, 255, 255)) end addEventHandler("onClientResourceStart", getRootElement(), testMyGui) Link to comment
MIKI785 Posted April 19, 2018 Share Posted April 19, 2018 Well of course, those functions are not meant to be used every frame. Just simply store the text in a variable and use that in the render handler instead. xmlRules = xmlNodeGetValue(xmlLoadFile("commands/rules.xml")) --store the text and not the node (btw. you should check if the file exists first) function testMyGui() help_window = interface:dxCreateWindow(x, y, width, height, tocolor(0, 0, 0, 125), false, "Help panel", (35/1080)*sy, tocolor(0, 0, 0, 225), tocolor(255, 255, 255, 255), nil) interface:dxAddBorder(help_window, "bottom", tocolor(255, 102, 255), 1) interface:setActiveGUI(help_window) interface:dxSetMovable(help_window, true) local tabPanel = interface:dxCreateTabPanel(0.025, 0.15, 0.95, 0.8, width*0.1521, true, help_window, tocolor(0, 0, 0, 125)) local tabRules = interface:dxCreateTab(tabPanel, "Rules", tocolor(0, 0, 0, 125), nil, tocolor(255, 255, 255, 255)) local RulesBox = interface:dxCreateTextWindow(0.025, 0.05, 0.95, 0.9, true, tabRules, tocolor(0, 0, 0, 100), tocolor(255,0,0,255), tocolor(0,255,0,255), false) interface:dxTextWindowAddText(RulesBox, xmlRules, tocolor(255, 255, 255, 255)) --show the text local tabOverview = interface:dxCreateTab(tabPanel, "Command usage", tocolor(0, 0, 0, 125), nil, tocolor(255, 255, 255, 255)) local tabCommands = interface:dxCreateTab(tabPanel, "All comannds", tocolor(0, 0, 0, 125), nil, tocolor(255, 255, 255, 255)) end addEventHandler("onClientResourceStart", getRootElement(), testMyGui) Link to comment
botshara Posted April 19, 2018 Author Share Posted April 19, 2018 12 minutes ago, MIKI785 said: Well of course, those functions are not meant to be used every frame. Just simply store the text in a variable and use that in the render handler instead. xmlRules = xmlNodeGetValue(xmlLoadFile("commands/rules.xml")) --store the text and not the node (btw. you should check if the file exists first) function testMyGui() help_window = interface:dxCreateWindow(x, y, width, height, tocolor(0, 0, 0, 125), false, "Help panel", (35/1080)*sy, tocolor(0, 0, 0, 225), tocolor(255, 255, 255, 255), nil) interface:dxAddBorder(help_window, "bottom", tocolor(255, 102, 255), 1) interface:setActiveGUI(help_window) interface:dxSetMovable(help_window, true) local tabPanel = interface:dxCreateTabPanel(0.025, 0.15, 0.95, 0.8, width*0.1521, true, help_window, tocolor(0, 0, 0, 125)) local tabRules = interface:dxCreateTab(tabPanel, "Rules", tocolor(0, 0, 0, 125), nil, tocolor(255, 255, 255, 255)) local RulesBox = interface:dxCreateTextWindow(0.025, 0.05, 0.95, 0.9, true, tabRules, tocolor(0, 0, 0, 100), tocolor(255,0,0,255), tocolor(0,255,0,255), false) interface:dxTextWindowAddText(RulesBox, xmlRules, tocolor(255, 255, 255, 255)) --show the text local tabOverview = interface:dxCreateTab(tabPanel, "Command usage", tocolor(0, 0, 0, 125), nil, tocolor(255, 255, 255, 255)) local tabCommands = interface:dxCreateTab(tabPanel, "All comannds", tocolor(0, 0, 0, 125), nil, tocolor(255, 255, 255, 255)) end addEventHandler("onClientResourceStart", getRootElement(), testMyGui) still drop Link to comment
MIKI785 Posted April 19, 2018 Share Posted April 19, 2018 I see now that it's not actually onClientRender that you're using, so that was never an issue. I don't see anything wrong with it, the issue is most likely in that 'interface' library. Link to comment
botshara Posted April 19, 2018 Author Share Posted April 19, 2018 (edited) 20 minutes ago, MIKI785 said: I see now that it's not actually onClientRender that you're using, so that was never an issue. I don't see anything wrong with it, the issue is most likely in that 'interface' library. Yea, looks like problem is in interface script. Interface script store data in setElementData, and use getElementData to display data, maybe there is problem? Desync or something like that. Bug also happens with shorter text but with smaller fps drop. Edited April 19, 2018 by botshara Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now