为什么我的OpenGL ES视图在iOS 4.3上有时是空白的?

时间:2011-03-20 20:56:46

标签: iphone ios opengl-es

我的应用程序“Guess-A-Sketch”在ios 4.3中有绘图问题。我有一个显示黑色的gl绘图画布。奇怪的是我发现如果我稍微调整ogl视图的帧大小它似乎工作..我在appstore中的版本不起作用所以我必须做一个更新来修复..虽然它看起来像一个错误。其他人看到这个?很烦人!即使我的帧调整修复,当我在视图上进行动画变换时,视图会闪烁黑色,这在以前的ios版本中是平滑的

4 个答案:

答案 0 :(得分:2)

您可能遇到this answer中提到的问题。在iOS 4.2中,处理渲染缓冲区的方式已经改变,以提高性能。来自OpenGL ES Programming Guide

  

在iOS 4.2及更高版本中,性能   核心动画旋转   渲染缓冲区已经显着   改进了,现在是首选   方式之间旋转内容   风景和肖像模式。为了最好   性能,确保渲染缓冲区   高度和宽度均为倍数   32像素。

在iOS 4.2上,有一个错误,32个非32位OpenGL ES渲染缓冲区大小在模拟器下显示为黑色(但在设备上工作正常)。鉴于您的内容在某些尺寸上正确显示,而在其他尺寸上则不正确,您可能会遇到相关问题。

在任何情况下,您都需要确保渲染缓冲区现在甚至是32的倍数,以获得最佳性能。

答案 1 :(得分:1)

我怀疑同样的事情发生在我身上,我的应用程序正在研究4.2.2但它在4.3中有异化行为。我在'openGL视图'中绘制图像,这是UIScrollView的子视图,有时图像是黑色的,直到它获得捏合或捏合手势,有时当图像在缩放中调整大小时,它会留下黑色边框在之前的瞬间绘制图像的地方,有时候图像在滚动视图内滚动得很好,但有些图像会变成黑色并且不会跟随滚动。这些都不会发生在4.3设备中。

感谢您的时间。 格雷格

答案 2 :(得分:0)

我同意Brad的观点,黑色背景听起来像是32个bug,但是闪烁不是......也许你可以尝试将Raintained支持设置为true。这可能有所帮助。

在OpenGLES2DView.m中:

eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys:
                                    [NSNumber numberWithBool:YES], kEAGLDrawablePropertyRetainedBacking, kEAGLColorFormatRGBA8, kEAGLDrawablePropertyColorFormat, nil];

答案 3 :(得分:0)

我遇到了同样的问题,这让我发疯了。

要修复它,我只是为我的Open GL视图指定了backgroundColor。我有没有想法这个东西是如何运作的,但是 为我解决了这个问题。

希望它有所帮助。

顺便说一句,这个特定的问题似乎在iOS 5上得到修复。