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