安卓OpenGL纹理颜色退化问题

3

我正在使用OpenGL进行2D图形编程,从32位PNG图像中加载纹理,但是当将纹理绘制到屏幕上时,颜色看起来很奇怪。

它看起来像颜色不完全准确,通道中使用的比特数少于8位。

下面左边的图片是设备原始输出,右边的是原始图像。你可以看到在渲染图像中梯度不够平滑。

问题

以下是增加了对比度的相同图像,这样你可以更清楚地看到这些伪影。

高对比问题

这是否正常?有什么解决方法吗?

注意:在三星Galaxy Tab 2 7.0 上渲染。


在SGS2上,默认情况下GLSurfaceView选择RGB565颜色模式。在启动GLSurfaceView时手动将其设置为RGB888可以帮助我的手机。也许Galaxy Tab也是这种情况? - harism
也许...我该如何设置这个模式? - Dusan
GLSurfaceView.setEGLConfigChooser(8, 8, 8, 8, 16, 8)。最后两个值根据您对深度和模板缓冲区的需求而变化。 - harism
是的!那就是问题所在。你可以写下答案,我会接受它。这对其他人来说也会非常有帮助。谢谢! - Dusan
1个回答

4
您可以尝试手动为GLSurfaceView设置RGB888模式:
GLSurfaceView.setEGLConfigChooser(8, 8, 8, 8, 16, 8)

最后两个值根据您对深度和模板缓冲区的需求而变化。至少在SGS2上,默认情况下设备选择RGB565颜色模式,导致颜色出现一些带状效果。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接