我在golang中成功制作了一个opengl 3.x的动画。然而;只有在渲染 20k 纹理后,逐帧更新才明显变慢。所有 Sprite 所做的只是从屏幕的左侧移动到右侧。请记住,它们都在彼此之上,因为我懒得随机分配位置。
我有一台更新的 PC,可以在高设置下运行 GTA5,但不能在 opengl3 环境中显示 20k Sprite (带纹理的四边形)?
我一定是做错了什么。也许我需要将所有顶点打包到一个 VBO 中,而不是为每个对象打包一个新的 vbo?我也绑定(bind)了每个对象。我不太确定是什么导致了这个瓶颈。有人可以帮忙吗,因为我不确定从这里去哪里?
我附上了我的代码作为引用,任何人都可以提供一些关于在 opengl3 中加速渲染 20k Sprite 的提示: http://pastebin.com/SHQtRPn7
最佳答案
在不查看源代码的情况下,您应该使用一个 VBO 并为共享纹理的所有 Sprite 组合几何图形,并使用一个绘制调用绘制它们。
关于performance - opengl3 20k Sprite 帧率慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31875813/
我目前对后台队列不太满意。我正在尝试让Resque工作。我已经安装了redis和Resquegem。Redis正在运行。一个worker正在运行(rakeresque:workQUEUE=simple)。使用Web界面,我可以看到工作人员正在运行并等待工作。当我运行“rakeget_updates”时,作业已排队但失败了。我已经用defself.perform和defperform试过了。发条.raketask:get_updates=>:environmentdoResque.enqueue(GetUpdates)end类文件(app/workers/get_updates.rb)c
我正在寻找一个好的图形框架来用Ruby制作一个漂亮的2D游戏。我做了3个非常简单的测试,看看哪个图形Ruby框架在Gosu之间更快。和Rubygame.该测试创建了1000个“Square”类的实例,这些实例使用框架的方法以最简单的方式移动和绘制一个红色方block。第三个测试是同一件事,但在纯OpenGL实现中(没有任何框架)。这是结果:纯OPENGL(使用ruby-opengl)80Fps:alttexthttp://grab.by/JTMGOSU(使用ruby-opengl+gosu)46Fps:alttexthttp://grab.by/JTCRUBYGAME(使用ru
在我们的Rails3.2.13应用程序(Ruby2.0.0+Heroku上的Postgres)中,我们经常从API中检索大量订单数据,然后我们需要在我们的数据库中更新或创建每个订单,因为以及协会。单个订单创建/更新自身加上大约。10-15个关联对象,我们一次最多导入500个订单。下面的代码可以工作,但问题是它在速度方面一点也不高效。创建/更新500条记录大约需要。1分钟并生成6500多个数据库查询!defadd_details(shop,shopify_orders)shopify_orders.eachdo|shopify_order|order=Order.where(:order
我最近遇到了&method(:method_name)语法。(这使用Object#method方法-RDoclink)例如,[5,7,8,1].each(&method(:puts))相当于[5,7,8,1].each{|number|putsnumber}在Ruby的各种实现中,与前者相比,后者是否存在性能损失?如果是,实现者是否正在努力提高其性能? 最佳答案 是的,这似乎对性能不利。deftimestart=Time.nowyield"%.6f"%(Time.now-start)enddefdo_nothing(arg)endR
我有一个rubyonrails应用程序。我正在调查我的NewRelic门户中的Apdex下降情况,我发现平均有250-320毫秒的时间花在了GC执行上。这是一个非常令人不安的数字。我在下面包含了一个屏幕截图。我的Ruby版本是:ruby1.9.3p194(2012-04-20修订版35410)[x86_64-linux]任何关于调整它的建议都是理想的。这个数字应该低得多。 最佳答案 您在GC上花费了很多时间,因为您经常运行GC。默认情况下,Ruby设置适用于小型脚本而非大型应用程序的GC参数。尝试使用以下环境参数集启动您的应用:
我有这个Sidekiqworker:classDealNoteWorkerincludeSidekiq::Workersidekiq_optionsqueue::emaildefperform(options={})ifoptions[:type]=="deal_watch_mailer"deal_watchers=DealWatcher.where("deal_id=?",options[:deal_id])deal_note=DealNote.find(options[:deal_note_id])current_user=User.find(options[:current_us
我已经编写(并复制)了几行Javascript,它很好地满足了我的目的。但我正试图找出一种更好的方法(跨浏览器和更好的性能)来做到这一点。我从friend那里复制了isInteger函数,但我不明白为什么我们要在以下条件下检查字符串值:if(((c"9")))returnfalse;上述条件工作正常,但当我更改它以检查数值时,功能中断。输入字段开始接受字母字符。这是我更改它时的样子:if(((c9)returnfalse;我试图注释掉部分内容,以便您了解正在发生的事情。此代码中还有任何安全漏洞吗?我读到1innerHTML1方法可以打开一些安全漏洞,因此我们需要用它执行“干净”操作。因
我想使用window.performance.memory来测量我的headlesschrome测试中是否有任何内存泄漏。在测试中:beforeEach(()=>{$('body').append(initHtml);console.log(window.performance.memory)});结果:MemoryInfo{}在开发控制台中:console.log(window.performance.memory)结果:MemoryInfo{totalJSHeapSize:27600000,usedJSHeapSize:16100000,jsHeapSizeLimit:153000
Thisisthecodeinquestion.但是,我可以在大多数网站页面上展示相同的效果,此页面就是其中之一。当使用googlechrome内置的FPS仪表测量帧率时,帧率在15到35之间。但是,当启用PaintFlashing时,帧率(几乎)稳定在60fps。我正在使用UserTimingAPI来测量运行动画javascript所花费的时间,并且在启用或不启用PaintFlashing的情况下似乎没有明显的区别。我已经使用GoogleChromeBeta版本52.0.2743.41beta(64位,ArchLinux)和版本52.0.2743.116m(64位,Windows10
看起来window.performance.getEntries和window.performance.getEntriesByType没有在Safari中定义。是否有针对这些功能的polyfill?还是有人创造了某种替代方案?我想做的是获取页面中加载的所有资源。(所有图片、css和js文件) 最佳答案 由于Safari不以任何JavaScript方式提供该信息,因此不可能为此创建Polyfill。别找了。你不会有运气的:(PS.:小心这个答案。window.performance上的一些功能可以用polyfill实现,但不是我要求