【发布时间】:2011-03-20 20:56:46
【问题描述】:
我的应用“Guess-A-Sketch”在 ios 4.3 中存在绘图问题。我有一个显示为黑色的 gl 绘图画布。奇怪的是,我发现如果我稍微调整一下 ogl 视图的帧大小,它似乎可以工作.. 我在应用商店中拥有的版本不起作用,所以我必须进行更新来修复.. 虽然它看起来像漏洞。还有人看到这个吗?很烦人!即使我的帧调整修复了当我对视图进行动画变换时视图闪烁黑色,这在以前的 ios 版本中是平滑的
【问题讨论】:
我的应用“Guess-A-Sketch”在 ios 4.3 中存在绘图问题。我有一个显示为黑色的 gl 绘图画布。奇怪的是,我发现如果我稍微调整一下 ogl 视图的帧大小,它似乎可以工作.. 我在应用商店中拥有的版本不起作用,所以我必须进行更新来修复.. 虽然它看起来像漏洞。还有人看到这个吗?很烦人!即使我的帧调整修复了当我对视图进行动画变换时视图闪烁黑色,这在以前的 ios 版本中是平滑的
【问题讨论】:
您可能会遇到this answer 中提到的问题。在 iOS 4.2 中,处理渲染缓冲区的方式已更改以提高性能。来自OpenGL ES Programming Guide:
在 iOS 4.2 及更高版本中,性能 核心动画旋转 渲染缓冲区已显着 改进,现在是首选 在之间旋转内容的方法 横向和纵向模式。为了最好 性能,确保渲染缓冲区的 高度和宽度都是倍数 32 像素。
在 iOS 4.2 上,存在一个错误,即非 32 的 OpenGL ES 渲染缓冲区大小在模拟器下简单地显示为黑色(但在设备上工作正常)。鉴于您的内容在某些尺寸下正确显示,但在其他尺寸下不正确,您可能会遇到相关问题。
无论如何,您都需要确保您的渲染缓冲区现在甚至是 32 的倍数,以获得最佳性能。
【讨论】:
我怀疑同样的事情发生在我身上,我的应用程序在 4.2.2 上运行,但在 4.3 中出现了异常行为。我在作为 UIScrollView 的子视图的“openGL 视图”中绘制图像,有时图像是黑色的,直到它得到捏合或捏合手势,有时当图像在缩放中调整大小时,它会留下黑色边框在前一刻绘制图像的位置,有时图像在滚动视图内滚动良好,但其他图像变为黑色并且不跟随滚动。这些事情都不会发生在 4.3 设备中。
感谢您的宝贵时间。 格雷格
【讨论】:
我同意 Brad 的观点,黑色背景听起来像 32 错误,但闪烁却不是……也许您可以尝试将 Raintained 支持设置为 true。这可能会有所帮助。
在 OpenGLES2DView.m 中:
eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], kEAGLDrawablePropertyRetainedBacking, kEAGLColorFormatRGBA8, kEAGLDrawablePropertyColorFormat, nil];
【讨论】:
我遇到了同样的问题,这让我发疯了。
为了解决这个问题,我简单地为我的 Open GL 视图指定了 backgroundColor。我不知道这东西是如何工作的,在这里,但它确实为我解决了这个问题。
希望对您有所帮助。
顺便说一句,这个特定的问题似乎在 iOS 5 上得到了修复。
【讨论】: