我要捕获屏幕。 Libgdx提供了ScreenUtils类中定义的一些功能。
例如final Pixmap pixmap = ScreenUtils.getFrameBufferPixmap(x, y, w, h);
我的问题是,获取该信息大约需要1-3秒。在这段时间内,游戏循环被阻塞,用户将其定义为滞后。
在内部ScreenUtils
类使用Gdx.gl.glReadPixels
。如果我在线程中运行ScreenUtils.getFrameBufferPixmap
方法,则不会出现延迟,但是它会以错误的方法捕获屏幕,这是合乎逻辑的,因为游戏循环会运行并更改内容。
是否可以通过Thread在以后的某个时间点复制GL上下文或保存它并生成Pixmap?当然,复制/保存操作应该立即完成,否则我将不遗余力。
我使用ShapeRenderer
将我的内容渲染到屏幕上。
最佳答案
经过很少的研究,我发现了更快的替代glReadPixels的方法-像素缓冲区对象,自Android 4.3起可用-https://vec.io/posts/faster-alternatives-to-glreadpixels-and-glteximage2d-in-opengl-es
除了渲染线程外,无法在其他线程上调用glReadPixels-https://stackoverflow.com/a/19975386/2158970
关于java - Libgdx异步使用ScreenUtils并且不停止游戏循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24717228/