LibGDX返回黑色像素ScreenUtils.getFrameBufferPixels

时间:2019-03-06 21:13:46

标签: android opengl-es libgdx opengl-es-2.0

这仅在一台设备上发生(到目前为止,尚未报道),无法确定它的隔离程度,没有其他用户对它大喊大叫。

华为P9 Lite(2017)产生了此问题(https://www.pdevice.com/product/huawei-p9-lite-2017-price-specs

我只是检索屏幕的像素并将其放入Pixmap中。但是,对于这种设备,像素(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问题,因为这很奇怪...

1 个答案:

答案 0 :(得分:0)

好吧,据我所知这似乎只是OpenGL陷阱。

您不能从屏幕/默认帧缓冲区可靠地读取glReadPixels,在某些情况下会抛出GLError 1286,也就是帧缓冲区不好。大多数情况下似乎还可以。

幸运的是,在将应用程序显示在屏幕上之前,我已经将我的应用程序渲染到辅助缓冲区中了,所以我只是用glReadPixels-而是现在似乎可以正常工作了。