草庐IT

android - 60 fps 时的 Kindle Fire 故障和纹理损坏

coder 2023-12-05 原文

这似乎是一个特定于 Fire 的 GPU 问题,我将不胜感激任何帮助或建议。

在大多数情况下,我的塔防游戏能够以每秒 60 帧的速度运行,即使有数十个敌人和塔向各个方向射击。然而,在看似随机的时间(即使什么都没有发生——比如坐在主菜单上)非常均匀间隔的 400 毫秒停顿以大约 2-3 秒的间隔暂停游戏。然后突然间,故障会消失,16x16 像素的纹理 block 将随机不渲染。

这 2 个故障似乎是相互排斥的,就像我说的那样,可以通过启动游戏并从主菜单导航到关卡选择屏幕来简单地触发,在该屏幕上加载的资源最少,并且发生的游戏逻辑很少。我将 OpenSL 用于音效,并且我注意到禁用 sfx 会将停顿持续时间更改为 280 毫秒。

然后我手动将帧速率从 60 fps 强制为 30 fps(通过在帧滴答循环中插休眠眠),两个故障都完全消失了。

这是演示纹理未渲染的屏幕截图。此错误发生在所有 32 位渲染表面中,无论深度/模板值如何以及颜色清除是打开还是关闭。

谢谢!

编辑:实际上,显然纹理闪烁发生在任何帧速率下,但是,在 40 到 45 fps 之间的某个地方,400 毫秒的故障消失了。

最佳答案

好的,这是一个非常微妙的驱动程序错误,不一定特定于 Kindle Fire。我希望将来能帮助别人避免类似的痛苦。我已经清楚地概述了症状,但错误的来源来自设置剪刀矩形。

本质上,我们有很多动画 UI 元素可以缩放屏幕,所以我们对剪刀矩形非常时髦。触发器似乎是在屏幕外设置剪刀矩形,然后在矩形外水平渲染。这样做会使 GPU 处于某种微妙的搞砸状态,这种状态似乎不会立即显现,但会逐渐变得更糟。

此外,这似乎修复了我们在 Droid RAZR 上遇到的一个错误,它具有与 Fire 相同的 GPU。该错误是我们在 logcat 中看到的游戏中的 5 秒卡住:

W/SharedBufferStack(14208): waitForCondition(LockCondition) timed out (identity=173, status=0). CPU may be pegged. trying again.

显然,这些类型的错误很难追踪和查明确切的条件,但它肯定与屏幕外剪刀矩形之外的渲染有关。

关于android - 60 fps 时的 Kindle Fire 故障和纹理损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10808860/

有关android - 60 fps 时的 Kindle Fire 故障和纹理损坏的更多相关文章

  1. ruby - 无法在 60 秒内获得稳定的 Firefox 连接 (127.0.0.1 :7055) - 2

    我使用的是Firefox版本36.0.1和Selenium-Webdrivergem版本2.45.0。我能够创建Firefox实例,但无法使用脚本继续进行进一步的操作无法在60秒内获得稳定的Firefox连接(127.0.0.1:7055)错误。有人能帮帮我吗? 最佳答案 我遇到了同样的问题。降级到firefoxv33后一切正常。您可以找到旧版本here 关于ruby-无法在60秒内获得稳定的Firefox连接(127.0.0.1:7055),我们在StackOverflow上找到一个类

  2. 安卓apk修改(Android反编译apk) - 2

    最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路

  3. ruby-on-rails - 如何从过时的 TZInfo 标识符中获取 Rails TimeZone 名称? - 2

    已经有一个问题回答了如何将“America/Los_Angeles”转换为“PacificTime(US&Canada)”。但是我想将“美国/太平洋”和其他过时的时区转换为RailsTimeZone。我无法在图书馆中找到任何可以帮助我完成此任务的东西。 最佳答案 来自RailsActiveSupport::TimeZonedocs:TheversionofTZInfobundledwithActiveSupportonlyincludesthedefinitionsnecessarytosupportthezonesdefinedb

  4. ruby-on-rails - Assets 管道损坏 : Not compiling on the fly css and js files - 2

    我开始了一个新的Rails3.2.5项目,Assets管道不再工作了。CSS和Javascript文件不再编译。这是尝试生成Assets时日志的输出:StartedGET"/assets/application.css?body=1"for127.0.0.1at2012-06-1623:59:11-0700Servedasset/application.css-200OK(0ms)[2012-06-1623:59:11]ERRORNoMethodError:undefinedmethod`each'fornil:NilClass/Users/greg/.rbenv/versions/1

  5. ruby - 比较 rspec 中的 float 时的奇怪行为 - 2

    以下测试中的第3个失败:specify{(0.6*2).shouldeql(1.2)}specify{(0.3*3).shouldeql(0.3*3)}specify{(0.3*3).shouldeql(0.9)}#thisonefails这是为什么呢?这是浮点问题还是ruby​​或rspec问题? 最佳答案 从rspec-2.1开始specify{(0.6*2).shouldbe_within(0.01).of(1.2)}在那之前:specify{(0.6*2).shouldbe_close(1.2,0.01)}

  6. ruby - Ruby gems 的问题(损坏?)试图让指南针在 npm 中工作 - 2

    我不是Ruby专家,但想弄清楚发生了什么,因为我试图让指南针在节点应用程序中工作,但我的Ruby似乎坏了。打字:ruby--version让我:ruby2.1.1p76(2014-02-24revision45161)[x86_64-darwin13.0]我安装了Homebrew,之前遇到过Ruby版本的问题,但它似乎已安装并且可以正常工作。但是,当我使用gem输入请求时,出现此错误:$gem-hErrorloadingRubyGemsplugin"/Users/user_dir/.rvm/gems/ruby-2.1.1@global/gems/executable-hooks-1.3

  7. ruby - 使用 Nokogiri 替换时的编码问题 - 2

    我有这个代码:#encoding:utf-8require'nokogiri's="CaféVerona".encode('UTF-8')puts"Originalstring:#{s}"@doc=Nokogiri::HTML::DocumentFragment.parse(s)links=@doc.css('a')only_text='CaféVerona'.encode('UTF-8')puts"Replacementtext:#{only_text}"links.first.replace(only_text)puts@doc.to_html但是,输出是这样的:Originals

  8. ruby - RVM screen 内部损坏 - 2

    我正在使用screen,甚至在rvm1.9.2之后并且有一个合适的.rvmrc我的服务器将仍然使用jruby。我的.screenrc包含shell#{SHELL}rvm信息显示jruby。好像rvm1.9.2没有任何效果,但它在screen外工作正常。 最佳答案 好的,我找到了solution.创建一个.screenrc文件并将此代码段放入其中:shell-$SHELLofficialinstructions省略破折号。 关于ruby-RVMscreen内部损坏,我们在StackOver

  9. ruby - RVM 系统范围的安装脚本 url 已损坏——什么是替换? - 2

    我的RVM系统级安装脚本损坏了,无论是LinodeStackScripts还是Chef-soloRecipes的形式。根据RVM网站上的说明,我的脚本以root身份执行以下命令以在系统范围内安装RVM:echo"InstallingRVMsystem-wide">>$logfilebash>/etc/profile上面的关键部分是urlhttp://bit.ly/rvm-install-system-wide。截至今天,2011年3月24日,此网址不再提供服务。它会导致GitHub404错误。RVM网站上的以下URL用于包含系统范围安装的说明:http://rvm.beginrescu

  10. ruby - 如何检查 RSpec 测试套件中的故障? - 2

    我正在试验RSpec并考虑一个仅在测试套件通过时才更改随机种子的系统。我试图在after(:suite)block中实现它,该block在RSpec::Core::ExampleGroup对象的上下文中执行。虽然RSpec::Core::Example有一个方法“exception”,允许您检查是否有任何测试失败,但在上似乎没有类似的方法RSpec::Core::ExampleGroup或示例列表的任何访问器。那么,如何检查测试是通过还是失败?我知道这可以使用自定义格式化程序来跟踪是否有任何测试失败,但格式化过程影响测试的实际运行似乎不是一个好主意。 最佳答

随机推荐