2014-04-21 53 views
0

在模拟器上运行我的OpenGL1应用程序时,位置非常接近的多边形会相互闪烁/合并(这些像素的z值不正确)。我的机器是一台旧的Mac mini。iOS模拟器OpenGL深度缓冲区问题

似乎这只发生在模拟器中,实际设备上的一切都很好。现在有人为什么?模拟器是否使用比iPhone低的深度缓冲区?

+0

当涉及到OpenGL时,模拟器与真实设备并不完全相似。我尝试的第一个OpenGL应用程序在模拟器中运行良好,并导致实际设备上的系统崩溃。无论如何,尽管你得到不同的行为并不令人惊讶,但这可能表明你在深度精度上处于边界。你使用什么样的投影?如果您使用其中一种常见投影,您的近远飞机是什么? –

回答

2

您将看到的确切的精度错误因PowerVR模型而异,因为它们大多是内部工作值如何累积而不是必须存储最终值的精度;我猜测模拟器在对它的要求内正确运行 - 一个指定深度的缓冲区,根据规范要求计算值 - 但恰好会产生不同的舍入误差。

模拟器通常不是模拟器。

+0

如果iPhone 4上的所有内容都正确显示,是否最有可能在所有iOS设备上正确显示? – user973224

+1

我真的不能确切地告诉你;我意识到,当我最后一次探讨准确性问题时,我的iPad 3,iPhone 5和模拟器产生了不同的输出,但在这些情况下,模拟器得到了“正确”,另外两个设备显示了不同的舍入误差。是否有什么你可以用'glPolygonOffset'来减轻你的问题,无论如何? – Tommy

+1

你应该做的另一件事是尽可能地将视锥体的近平面和远平面保持在一起。在不剪切几何图形的情况下,尽可能地将近值尽可能大(并且远值尽可能小)。 – GuyRT