为什么我在4.2模拟器中看不到特定的OpenGL ES图表?

我正在编写一个包含在OpenGL ES中绘制的一些graphics的应用程序。 这些图表中的每一个都在表格单元格中,当我按下其中一些图表时,它将以全屏模式打开。 一切工作完美,因为我升级到iOS4.2。 现在问题出在模拟器中,我看不到在单元格中绘制的graphics,但在全屏模式下,我看到图表。 没有改变没有设备,它只在模拟器上,只在一个案件。 其他Mac在这里的行为是一样的。

有人有线索吗?

正如在这个 类似的问题的 答案中所解释的那样,4.2在Core Animation层次中处理渲染缓冲区的方式发生了变化。 从OpenGL ES编程指南 :

在iOS 4.2和更高版本中,渲染缓冲区的Core Animation旋转性能得到了显着改善,现在是在横向和纵向模式之间旋转内容的首选方式。 为了获得最佳性能,请确保渲染缓冲区的高度和宽度均为32像素的倍数。

看起来,如果你的渲染缓冲区不是32像素的倍数,它不会显示在模拟器中。 这是模拟器中的一个错误,但是在任何情况下,都应该使渲染缓冲区的倍数为32,以提高性能。

与我的应用程序相同的东西 我的纹理偶尔在模拟器(4.2)上被打破。 在硬件上一切看起来不错。

我不知道这是否有帮助,但我已经看到模拟器上的所有奇怪行为的方式实施的OpenGL ES:出现虚假图像; 第一次渲染过程中奇怪的灯光; 破坏渲染到位图,取决于我什么时候调用它。 我不是OpenGL编程方面的专家,所以我可以写一些废话代码,但是模拟器和真实硬件的行为肯定有明显的差别。

你的经验表明,也许我的问题不完全是我的错。 🙂