我正在编写一个应用程序,但遇到了低fps,我发现spriteBatch.draw()方法几乎消耗了所有CPU时间(约千次调用)。所以我创建了简单的绘图应用程序
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 当我增加窗口大小以至于几乎将整个屏幕的fps降低到7!时,当窗口大小变化很小时,它以60fps的速度运行时,在全屏模式下,我得到20FPS(1600x900)-比最大化窗口好 我只使用一种纹理(512,512-png),spriteBatch上的maxRenderCalls是2,polygonSpriteBatch上的maxRenderCalls-两个都是相同的FPS 禁用混合->不变,相同FPS
2k的精灵在桌面上将fps降至20以下是否正常? -(Core i5-3210M处理器(2.50GHz 1600MHz 3MB),NVIDIA®GeForce®GT630M)
更改窗口大小会影响性能是否正常?
答案 0 :(得分:0)
我会尝试自己回答(随时发布更好的答案) 是正常的。
性能问题的主要原因是尺寸。 绘画的大小确实很重要,当我以十分之一的大小绘画时,即使有5万个精灵,我也会得到 30fps!
使用PolygonSpriteBatch时,即使启用了混合功能,我也可以得到更高的(48fps)!
也经常启用和禁用出血(我已经完成了1000次以上的帧处理),实际上会对性能产生负面影响。