【问题标题】:Why is my OpenGL ES view sometimes blank on iOS 4.3?为什么我的 OpenGL ES 视图在 iOS 4.3 上有时是空白的?
【发布时间】:2011-03-20 20:56:46
【问题描述】:

我的应用“Guess-A-Sketch”在 ios 4.3 中存在绘图问题。我有一个显示为黑色的 gl 绘图画布。奇怪的是,我发现如果我稍微调整一下 ogl 视图的帧大小,它似乎可以工作.. 我在应用商店中拥有的版本不起作用,所以我必须进行更新来修复.. 虽然它看起来像漏洞。还有人看到这个吗?很烦人!即使我的帧调整修复了当我对视图进行动画变换时视图闪烁黑色,这在以前的 ios 版本中是平滑的

【问题讨论】:

    标签: iphone ios opengl-es


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 感谢您的帮助,我会尝试一下。我猜闪烁是因为我的变换是视图上的动画比例,所以当它缩放时它会通过一些不好的尺寸?以前版本的操作系统中没有发生,只有 4.3。我会在最终结果大小上尝试速度建议。
    【解决方案2】:

    我怀疑同样的事情发生在我身上,我的应用程序在 4.2.2 上运行,但在 4.3 中出现了异常行为。我在作为 UIScrollView 的子视图的“openGL 视图”中绘制图像,有时图像是黑色的,直到它得到捏合或捏合手势,有时当图像在缩放中调整大小时,它会留下黑色边框在前一刻绘制图像的位置,有时图像在滚动视图内滚动良好,但其他图像变为黑色并且不跟随滚动。这些事情都不会发生在 4.3 设备中。

    感谢您的宝贵时间。 格雷格

    【讨论】:

    • 我忘了说这种行为发生在各种尺寸的图像上,当我的帧缓冲区是 32 的倍数时,但在这种情况下,我会说黑色图像不太常见,它也可以是偏执狂......
    【解决方案3】:

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

    在 OpenGLES2DView.m 中:

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

    【讨论】:

    • 只是为了添加更新。我查看并已经设置了上述属性。我得到了 32 的整数倍,但我的情况听起来不同。我定义了一个缓冲区大小,然后根据用户操作,我使用“transform”属性缩放和变换该视图。所以我不会改变初始帧大小,只是缩放那里的内容。我确实发现我必须在每个变换上添加一些软糖因子才能找到一个不会呈现黑色并且有效的尺寸。在视图的动画转换过程中,我再次看到绘图伪影和闪烁。
    【解决方案4】:

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

    为了解决这个问题,我简单地为我的 Open GL 视图指定了 backgroundColor。我知道这东西是如何工作的,在这里,但它确实为我解决了这个问题。

    希望对您有所帮助。

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

    【讨论】:

      猜你喜欢
      • 2017-03-04
      • 2010-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-08
      • 1970-01-01
      • 2011-09-12
      相关资源
      最近更新 更多