我想截屏。 Libgdx 提供了一些在 ScreenUtils 中定义的函数类。
例如final Pixmap pixmap = ScreenUtils.getFrameBufferPixmap(x, y, w, h);
我的问题是获取该信息大约需要 1-3 秒。在此期间,游戏循环被阻塞,用户将其定义为延迟。
在 ScreenUtils
类内部,使用 Gdx.gl.glReadPixels
。如果我在线程中运行 ScreenUtils.getFrameBufferPixmap
方法,没有延迟,但它以错误的方法捕获屏幕,这是合乎逻辑的,因为游戏循环运行并更改内容。
是否可以在线程的帮助下以某种方式复制 GL 上下文或保存它并在稍后的时间生成像素图?当然复制/保存操作要立即完成,否则我不惜一切代价。
我使用 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/