按照LearnOpenGL的教程制作了一个能够躲避弹幕的小游戏,一开始弹幕量小的时候保持在60fps,后来300弹幕量开始下降到20fps左右
现在依然用这个教程里面的逐个drawcall的方式(尝试过实例化但是不会写),性能下降很多
以下答案引用自GPT-3大模型,请合理使用:
。
很多同学都遇到过这种情况,理论上来说每个drawcall的性能要比单独执行更好,但是实际上并不是这样。
原因有几个:
在实现游戏弹幕躲避功能时,弹幕的数量会不断增加,导致渲染速度下降。
在实现游戏弹幕躲避功能时,需要对弹幕进行分析处理,这样会增加CPU的负载。
在实现游戏弹幕躲避功能时,需要将弹幕信息存储在内存中,这样也会增加内存使用量。
在大多数情况下,只有第一个原因才是导致性能下降的主要原因。
针对这种情况,有几种解决方案:
在实现游戏弹幕躲避功能时,尽可能减少弹幕的数量。
在实现游戏弹幕躲避功能时,使用GPU加速渲染弹幕。
在实现游戏弹幕躲避功能时,减少对弹幕的处理。
在实现游戏弹幕躲避功能时,将弹幕信息存储在硬盘中。
使用第三方弹幕处理库,如OpenGL Shader Library等。
第一种解决方案是最简单也是最有效的,在大多数情况下可以解决性能问题。
第二种解决方案也是有效的,但是需要对GPU进行配置,而且也不适合所有系统。
第三种解决方案是可行的,但是也会增加CPU的负载。
第四种解决方案是不适合所有系统的,因为需要大量的硬盘空间。
第五种解决方案是可行的,但是需要购买第三方弹幕处理库。
不知道你这个问题是否已经解决, 如果还没有解决的话: