2

我正在尝试以最有效的方式截取屏幕截图。我使用 FrameBuffer 是截取屏幕截图的最有效方式,因为我可以在与渲染线程不同的线程中处理数据。如何从 FrameBUffer 获取信息并将其传输到文件中?

FrameBuffer m_fbo;

render(){
   m_fbo = new FrameBuffer(Format.RGB565, (int)(w * m_fboScaler), (int)(h * m_fboScaler), false);
   m_fboRegion = new TextureRegion(m_fbo.getColorBufferTexture());
   m_fboRegion.flip(false, true);
   m_fbo.begin();
   ...rendering...
   m_fbo.end();
   writeTextureRegionToFile(); - i need some lines of code for the implementation of this method
}
4

1 回答 1

2

内容驻留在 OpenGL 管理的FrameBuffer内存中,因此(据我所知)您仍需要在渲染线程上使用 OpenGL API 获取这些字节。具体来说,您希望该类ScreenUtils 获得byte[]包含您的内容RGBA8888FrameBuffer.

一旦你得到原始字节,你当然可以在不同的线程上进行任何压缩/转换/输出。有一个论坛帖子有一个快速而肮脏的PNG作家。Libgdx 特定 (?)CIM格式也是一个选项(请参阅PixmapIO),但您必须将字节转换为Pixmap第一个。

于 2013-04-05T19:54:34.253 回答