LibGDX 返回黑色像素 ScreenUtils.getFrameBufferPixels

LibGDX returning black pixels ScreenUtils.getFrameBufferPixels

这只发生在一台设备上(据报道),除了没有其他用户对我大喊大叫外,无法确定它有多孤立。

Huawei P9 Lite (2017) 正在制作这个问题(https://www.pdevice.com/product/huawei-p9-lite-2017-price-specs)

我只是检索屏幕的像素并将它们放入像素图中。然而,对于这个设备,像素 (RGBA) 都是 [0,0,0,1] - 所以它甚至不是 alpha 问题。

对于我自己的所有测试设备,以及到目前为止所有其他用户,都没有发生这种情况。

screenPixmap = new Pixmap(width, height, Pixmap.Format.RGBA8888);
ByteBuffer pixels = screenPixmap.getPixels();
Gdx.gl.glReadPixels(0, 0, width, height, GL20.GL_RGBA, GL20.GL_UNSIGNED_BYTE, pixels);

我觉得这一定是 GPU 问题,因为它有点奇怪...

好吧,据我所知,这似乎只是一个 OpenGL 问题。

您不能可靠地从 screen/default 帧缓冲区进行 glReadPixels,某些情况下会抛出 GLError 1286,也就是帧缓冲区错误。大多数情况下似乎没问题。

幸运的是,在我的情况下,我已经将我的应用程序渲染到辅助缓冲区,然后再将其显示在屏幕上,所以我只是 glReadPixels-ing,现在似乎可以工作了。