我的场景中有三种不同的OBJ,一种身体,以及在该身体上模拟的衬衫和裤子(按此顺序呈现)。
渲染在我测试的Android设备上以某些“洞”的形式显示了裤子外面的内衬,而它在桌面上工作得很好。
我猜测某些点彼此非常接近,因此尝试了highp以获得精确度,并且它在我的某些设备上开始工作正常(令人惊讶的是它不适用于一岁的Nexus!)
Q值。我是否确定了正确的问题,或者可能是因为任何其他可能的原因。有什么办法可以在所有设备上解决这个问题吗?
Q值。我能以某种方式至少知道哪些GPU会出现这个问题,以便我可以相应地定位我的APK吗?
使用:
Android 5.0
OpenGL ES 3.0
编辑:
如果有任何帮助,旋转场景或放大时间,这些洞会显示出“闪烁的行为”。
答案 0 :(得分:0)
highp
支持不是强制性的,而且AFAICT它也不是一个'扩展程序,因此您无法查询它并且也不会记录它的支持GLES功能数据库,如http://opengles.gpuinfo.org/
您可以使用glGetShaderPrecisionFormat
(http://docs.gl/es3/glGetShaderPrecisionFormat)
当然,您可以根据应用程序了解实际需要的精确度。这是在运行时,无法提前知道。
答案 1 :(得分:0)
好吧,所以我似乎已经解决了这个问题。
我引用opengl archives:
12.040深度缓冲似乎有效,但多边形似乎会通过它们前面的多边形渗透。发生了什么?
您可能已经以某种方式配置了zNear和zFar剪裁平面 这严重限制了深度缓冲精度。一般来说,这是 由zNear剪裁平面值引起的距离太接近0.0。作为 z近似剪裁平面设置越来越接近0.0,有效 深度缓冲区的精度急剧下降。移动zFar 剪切平面进一步远离眼睛总是有负面影响 关于深度缓冲精度,但它并不像移动它那样引人注目 z近似剪裁平面。
同一页面有很多关于边界框和相关问题的细节。很好读。
我有一个巨大的BB。我减小了尺寸并将相机移近物体,所有设备都解决了这个问题。