Thousand sprite 绘制性能不佳
Thousand sprite draws poor performance
我正在写一个应用程序,我遇到了低帧率,我发现几乎所有 CPU 时间都被 spriteBatch.draw() 方法(大约一千次调用)消耗了。所以我创建了简单的绘图应用程序
public void render() {
spriteBatch.begin();
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
for (int i = 0; i < 2000; i++) {
spriteBatch.draw(tex, 0, 0);
}
spriteBatch.end();
}
应用程序运行 18fps
当我增加 window 大小时,它几乎填满了整个屏幕 fps 下降到 7!,当 window 大小变化很小时,它以 60fps 运行,在全屏上我得到 20FPS(1600x900) - 比最大化更好window
我只使用一个纹理(512、512 - png),spriteBatch 上的 maxRenderCalls 是 2,polygonSpriteBatch 上是 5 - 两个相同的 FPS
禁用混合 -> 无变化,相同的 FPS
2k 的精灵在桌面上将 fps 降低到 20 以下是否正常? - ( Core i5-3210M 处理器(2.50GHz 1600MHz 3MB), NVIDIA® GeForce® GT630M)
改变windows大小影响性能正常吗?
我会尽量自己回答(欢迎post更好的回答)
正常。
性能问题的主要原因是大小。 绘图大小真的很重要,当我以十分之一的大小绘制它时,即使有 50 000 个精灵,我也能得到 30fps!
使用 PolygonSpriteBatch 时,即使启用了混合,我也可以获得更多 (48fps)!
也经常启用和禁用出血(我每帧做了 1000 多次),确实会对性能产生负面影响。
我正在写一个应用程序,我遇到了低帧率,我发现几乎所有 CPU 时间都被 spriteBatch.draw() 方法(大约一千次调用)消耗了。所以我创建了简单的绘图应用程序
public void render() {
spriteBatch.begin();
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
for (int i = 0; i < 2000; i++) {
spriteBatch.draw(tex, 0, 0);
}
spriteBatch.end();
}
应用程序运行 18fps 当我增加 window 大小时,它几乎填满了整个屏幕 fps 下降到 7!,当 window 大小变化很小时,它以 60fps 运行,在全屏上我得到 20FPS(1600x900) - 比最大化更好window 我只使用一个纹理(512、512 - png),spriteBatch 上的 maxRenderCalls 是 2,polygonSpriteBatch 上是 5 - 两个相同的 FPS 禁用混合 -> 无变化,相同的 FPS
2k 的精灵在桌面上将 fps 降低到 20 以下是否正常? - ( Core i5-3210M 处理器(2.50GHz 1600MHz 3MB), NVIDIA® GeForce® GT630M)
改变windows大小影响性能正常吗?
我会尽量自己回答(欢迎post更好的回答)
正常。
性能问题的主要原因是大小。 绘图大小真的很重要,当我以十分之一的大小绘制它时,即使有 50 000 个精灵,我也能得到 30fps!
使用 PolygonSpriteBatch 时,即使启用了混合,我也可以获得更多 (48fps)!
也经常启用和禁用出血(我每帧做了 1000 多次),确实会对性能产生负面影响。