Libgdx异步使用ScreenUtils并且不停止游戏循环
我想要捕捉屏幕。 Libgdx提供了一些在ScreenUtils类中定义的函数。
例如final Pixmap pixmap = ScreenUtils.getFrameBufferPixmap(x, y, w, h);
我的问题是需要大约1-3秒才能获得这些信息。 在此期间,游戏循环被阻止,用户将其定义为滞后。
ScreenUtils
类的内部使用Gdx.gl.glReadPixels
。 如果我在一个线程中运行ScreenUtils.getFrameBufferPixmap
方法,就没有延迟,但它会以错误的方法捕获屏幕,这是合乎逻辑的,因为游戏循环运行并改变了内容。
是否有可能复制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
我找到了一个解决方案,在我的情况下工作,因为我只有很小的图形/形状。 基本上我复制了所有绘制到视图的对象,如此处所述。 在后台线程中,我以编程方式生成一个位图,并使用存储在我的对象中的信息绘制位图。
链接地址: http://www.djcxy.com/p/21727.html上一篇: Libgdx use ScreenUtils asynchronously and don't stop the game loop
下一篇: In Inkscape, how to set the coordinates of a control point by entering numbers?