Libgdx异步使用ScreenUtils,不停止游戏循环

6
我想捕获屏幕。Libgdx提供了一些在ScreenUtils类中定义的函数。
例如,final Pixmap pixmap = ScreenUtils.getFrameBufferPixmap(x, y, w, h); 我的问题是获取这些信息需要大约1-3秒钟。在此期间,游戏循环被阻塞,用户会认为它卡顿了。
在内部,ScreenUtils类使用Gdx.gl.glReadPixels。如果我在一个线程中运行ScreenUtils.getFrameBufferPixmap方法,就不会有卡顿,但是它会在错误的时间捕获屏幕,这是合理的,因为游戏循环会运行并更改内容。
是否可以以某种方式复制或保存GL上下文,并在稍后的时间点使用线程生成Pixmap?当然,复制/保存操作应该立即完成,否则我一无所获。
我使用ShapeRenderer将我的内容呈现到屏幕上。

1
抱歉,我不是故意点了踩(手滑了),但我无法撤销它。 - Tekkerue
2个回答

2

1
这可能有效,但我必须使用由LibGDX提供的OpenGL库,而我不太确定如何将其连接起来。 - Niklas

1
我已经找到了一个解决方案,对于我的情况有效,因为我只有少量的图形/形状。基本上,我复制了所有绘制到视图中的对象,如这里所述。在后台线程中,我以编程方式生成位图并使用存储在我的对象中的信息来绘制位图。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接