Android增强现实应用程序只能在最高像素密度下进行战斗

时间:2014-05-01 21:01:08

标签: android opengl-es-2.0 vuforia

我正在编写一个基于Vuforia的增强现实应用程序,我主要测试的是Galaxy S3,即xhdpi(320ppi)。它一直很顺利,但我们刚刚开始测试HTC One和Galaxy S4(两者都是xxhdpi - HTC是469ppi而三星是相似的)。增强是一组相当复杂的网格,具有一些格子元素。似乎有些网格与其他网格战斗,但仅限于这些非常高密度的设备。

我们观察到当我们接近模型时,z战斗停止了。

我的猜想是表面非常靠近,足够接近,在较大距离处,深度函数的最低有效位值高于深度差,导致战斗。但是,我不明白为什么这只会发生在xxhdpi设备上。

我的推测是否正确?如果是这样,我可以提高修复精度,还是硬件约束?鉴于多边形实际上不应该是重合的,并且似乎没有在其他设备上表现出这种行为,像glPolygonOffset这样的东西会有帮助吗?我还可以使用其他方法吗?

1 个答案:

答案 0 :(得分:1)

将深度缓冲区从16位设置为24位,修复此问题。

Android的相关方法是GLSurfaceView#setEGLConfigChooser(int, int, int, int, int, int)