我有一个使用 LibGDX 创建的应用程序。我可以在桌面上运行该应用程序,它以 90 fps @1080p 的速度运行。
在 Firefox 上,它以 40-50 fps @1080p(最大化窗口)的速度运行。
在 Chrome 上,它以 30 fps @1080p(最大化窗口)的速度运行。
但是在 Chrome 上,如果我降低分辨率,性能会翻倍(达到 60fps)。在 Firefox 上不会发生这种情况。这可能是什么原因造成的?
我正在使用 webkitRequestAnimationFrame。
如图所示,我知道我的 PC 可以很好地处理分辨率。
编辑
我正在尝试应用下面的技巧,尽管它们似乎主要针对移动 GPU。
来源:https://wiki.mozilla.org/Platform/GFX/MobileGPUs#Memory_Bandwidth
总是在 glBindFramebuffer 之后立即调用 glClear
请参阅 Adreno 200 文档,第 3.2.1 节:“必须 (a) 在切换帧缓冲区对象 (FBO) 时使用清除,以避免驱动程序尝试保存/恢复 GMEM 内容,并且 (b) 始终在帧开始时清除深度缓冲区。”
这是有道理的,所以我们应该始终这样做。具体来说,这意味着我们应该在每次 glBindFramebuffer 调用之后执行 glClear,最好是在它之后,或者至少在任何绘制调用之前。
帧缓冲区绑定(bind)很昂贵
更改帧缓冲区绑定(bind)强制立即解析当前帧缓冲区的渲染。因此,对渲染进行排序以最小化帧缓冲区绑定(bind)非常重要。 Adreno 200 文件的第 3.2.4 节有一个有用的解释。
编辑
以上内容没有显着差异。
编辑
我感觉这个问题是由 GLSL 编译器引起的。我对这个主题了解不多,但我相信 OpenGL ES 的 GLSL 被编译为常规 GLSL,带有一些特定于浏览器的代码。可能是 Chrome 的编译效果不佳,导致片段着色在较高分辨率下减慢程序速度。
如果有人对如何确保此编译得到优化有一些提示,我可以尝试一下,看看是否能解决问题。
编辑
该问题在配备 Intel HD Graphics 4000+ 芯片组的 Windows 上的 Chrome 浏览器中似乎并不普遍。 Chrome 版本:40.0.2214.111 m。低分辨率:45fps~。高分辨率:稳定 30 fps。
我最初的测试用例是在带有 GTX 650 的 Ubuntu 上使用 Chrome。稍后将添加 Chrome 版本。
编辑
显示此问题的 Chrome 版本:在 GTX 650 显卡上的 Ubuntu 上为 40.0.2214.111(64 位)。
编辑
在装有 GTX 650 的同一台 PC 上,在 Windows 7 下,同一应用程序在 Chrome 下以 60fps 稳定运行。由于在 Ubuntu 下,编译为 Java 的应用程序在 90fps 下运行良好,我相信这不是 Linux 驱动程序问题,而是 Linux 版本的 Chrome 问题。
编辑
我已就此向 Chrome 发送错误报告。
最佳答案
不包括这里的其他内容,就我上次所涉及的而言,所有那些 requestAnimationFrame 方法上限为 60fps,并且只能低于此值.
你可以用这个位来测试它:http://cssdeck.com/labs/gvxnxdrh/ .您可以根据需要修改 fps var,但在我桌面上的任何浏览器中,动画不会超过 60fps。
关于javascript - WebGL 和 Chrome : high resolution makes for bad performance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28562137/
我遇到了一个非常奇怪的问题,我很难解决。在我看来,我有一个与data-remote="true"和data-method="delete"的链接。当我单击该链接时,我可以看到对我的Rails服务器的DELETE请求。返回的JS代码会更改此链接的属性,其中包括href和data-method。再次单击此链接后,我的服务器收到了对新href的请求,但使用的是旧的data-method,即使我已将其从DELETE到POST(它仍然发送一个DELETE请求)。但是,如果我刷新页面,HTML与"new"HTML相同(随返回的JS发生变化),但它实际上发送了正确的请求类型。这就是这个问题令我困惑的
我将Cucumber与Ruby结合使用。通过Selenium-Webdriver在Chrome中运行测试时,我想将下载位置更改为测试文件夹而不是用户下载文件夹。我当前的chrome驱动程序是这样设置的:Capybara.default_driver=:seleniumCapybara.register_driver:seleniumdo|app|Capybara::Selenium::Driver.new(app,:browser=>:chrome,desired_capabilities:{'chromeOptions'=>{'args'=>%w{window-size=1920,1
我有这个:AccountSummary我想单击该链接,但在使用link_to时出现错误。我试过:bot.click(page.link_with(:href=>/menu_home/))bot.click(page.link_with(:class=>'top_level_active'))bot.click(page.link_with(:href=>/AccountSummary/))我得到的错误是:NoMethodError:nil:NilClass的未定义方法“[]” 最佳答案 那是一个javascript链接。Mechan
我看到有关未找到文件min.map的错误消息:GETjQuery'sjquery-1.10.2.min.mapistriggeringa404(NotFound)截图这是从哪里来的? 最佳答案 如果ChromeDevTools报告.map文件的404(可能是jquery-1.10.2.min.map、jquery.min.map或jquery-2.0.3.min.map,但任何事情都可能发生)首先要知道的是,这仅在使用DevTools时才会请求。您的用户不会遇到此404。现在您可以修复此问题或禁用sourcemap功能。修复:获取文
是否有chrome开关来抑制“外部协议(protocol)请求”?我正在使用selenium-ruby-watirwebdriver自动化应用程序。我在网上搜索了绕过此窗口和对话的解决方案:http://productforums.google.com/forum/#!topic/chrome/K22hXwRy6zQ概述了我们如何手动执行此操作。但是对于Selenium-Chrome-Ruby,我需要通过可能设置一个chrome开关(chorme开关列表:=http://src.chromium.org/svn/trunk/src/chrome/common/chrome_swit
我使用的是最新版本的Chrome(32.0.1700.107)和Chrome驱动程序(V2.8)。但是当我在Ruby中使用以下代码运行示例测试时:require'selenium-webdriver'WAIT=Selenium::WebDriver::Wait.new(timeout:100)$driver=Selenium::WebDriver.for:chrome$driver.manage.window.maximize$driver.navigate.to'https://www.google.co.in'defapps_hoverele_hover=$driver.find_
当使用rubyselenium驱动程序驱动chrome时,我得到/home/travis/.rvm/gems/ruby-2.6.2/gems/selenium-webdriver-3.141.5926/lib/selenium/webdriver/remote/response.rb:72:in`assert_ok':sessionnot创建:Chrome版本必须在70和73之间(Selenium::WebDriver::Error::SessionNotCreatedError)如何解决这个问题?降级chrome不是我想做的事。 最佳答案
我有一个用Rails3编写的站点。我的帖子模型有一个名为“内容”的文本列。在帖子面板中,html表单使用tinymce将“content”列设置为textarea字段。在首页,因为使用了tinymce,post.html.erb的代码需要用这样的原始方法来实现。.好的,现在如果我关闭浏览器javascript,这个文本区域可以在没有tinymce的情况下输入,也许用户会输入任何xss,比如alert('xss');.我的前台会显示那个警告框。我尝试sanitize(@post.content)在posts_controller中,但sanitize方法将相互过滤tinymce样式。例如
这是一个研究案例:......我正在尝试使用WatirRuby的API引用名为“bar”的嵌入元素。该元素由Chrome的DOM检查器显示,但我无法使用Watir的任何查找方法找到它:browser.embeds()#onlyisfoundbrowser.html.include?'bar'#=>false为什么会这样?为什么Watir不显示完整的HTML?如果我有不同框架中的元素或由Javascript初始化函数动态插入的元素,是否可以使用Watir访问它们?谢谢 最佳答案 如果元素在框架中,你必须使用这样的东西:browser.
出于某种原因,我必须为Firefox禁用javascript(手动,我们按照提到的步骤执行http://support.mozilla.org/en-US/kb/javascript-settings-for-interactive-web-pages#w_enabling-and-disabling-javascript)。使用Ruby的SeleniumWebDriver如何实现这一点? 最佳答案 是的,这是可能的。而是另一种方式。您首先需要查看链接Selenium::WebDriver::Firefox::Profile#[]=