我的应用程序基于 openGL,支持 ES 1.1 和 ES 2.0。
我的视图控制器有一个视图,它是 EAGLView 的一个实例(根据 Apple 的示例代码),它反过来为 ES 1.1 或 2.0 使用不同的“渲染器”对象(对于使用过 Xcode 示例的任何人来说,这几乎是标准)。
我使用 CADisplayLink 来更新屏幕。我的目标是至少 iOS 4.0+,所以应该没有问题。
启动时,显示启动图像 (Default.png) 后的第一帧呈现黑色。中间有一帧烦人的黑色闪烁。
如果在制作窗口 Key and Visible 之前我“伪造”了一轮更新/渲染周期(以便将后台缓冲区也渲染到,而不是空的),则闪烁消失但仅在使用 ES 2.0 时才会消失。
我将 kEAGLDrawablePropertyRetainedBacking 设置为 YES,但是这两个值似乎都没有任何区别。
使用 ES 1.1 时,闪烁仍然存在。唯一的区别是,如果我在使窗口可见之前执行“刷新”,屏幕会闪烁到我使用 glClearColor() 指定的颜色。但是如果我不预刷新,闪烁总是黑色的。
我已经在 Cocos2d 论坛上一次又一次地看到关于这个问题的讨论,但即使在那里,这个问题似乎总是在每次提出新的 hack 之后又回来咬你。
尽管如此,我使用的是普通 OpenGL ES(不是Cocos2d 或任何其他库),但无论我如何搜索网络,都找不到任何有类似问题的人......
有什么提示吗?