使用glReadPixels和帧缓冲对象的位图质量

时间:2015-06-18 22:14:20

标签: android opengl-es bitmap

使用OpenGL 2在Android上从帧缓冲区对象导出位图时,我遇到以下问题。

我将图像加载到OpenGL中并显示在屏幕上。加载的图像比实际屏幕大,因此我做了一些矩阵操作以使其适合屏幕。

然后我尝试将图像导出回原始大小的位图并保存或在屏幕上显示。为了实现这一点,我创建了一个帧缓冲对象,将其绑定到当前的OpenGL上下文," draw"纹理并使用glReadPixels创建Bitmap

这是原始图像(当然适合调整大小),当我将其加载到OpenGL时,我可以在屏幕上正确看到它:

enter image description here

这是导出的图像(当然适合调整大小):

enter image description here

如您所见,导出的图像有一些较暗的区域。我错过了任何标准配置吗?

我也在适合屏幕的较小纹理上遇到此问题。但是较暗的区域有点不同 - 相反可以看到更亮的点。

我确信这不是我的矩阵操作,因为当从着色器中删除矩阵乘法时,我仍然会遇到这个问题。

1 个答案:

答案 0 :(得分:0)

添加glDisable(GL_DITHER)可以解决问题。

谢谢@RetoKoradi。