iphone - GLKView设置可绘制属性

标签 iphone ios5 opengl-es-2.0 glkit

我正在尝试移植 Apples GLPaint 示例以使用 GLKit。使用 UIView,可以返回 View 的 CAEAGLLayer 并将 drawableProperties 设置为包含 kEAGLDrawablePropertyRetainedBacking。正如预期的那样,这具有在呈现渲染缓冲区后保留可绘制内容的效果。删除此属性会导致绘制调用后闪烁,部分可绘制内容似乎被绘制到不同的缓冲区。

问题是这正是我现在在 GLKView 中遇到的问题,但似乎没有办法设置可绘制属性。返回 CAEAGLLayer 并设置属性没有任何效果,并且我没有看到 GLKView 的任何相关属性来设置保留支持。

还有其他人遇到过这个问题或者有解决方案吗?

最佳答案

如果您想在 GLKView 中获取 kEAGLDrawablePropertyRetainedBacking,请将以下类别添加到您的项目中。

@interface CAEAGLLayer (Retained)

@end 

@implementation CAEAGLLayer (Retained)

- (NSDictionary*) drawableProperties
{
    return @{kEAGLDrawablePropertyRetainedBacking : @(YES)};
}

@end

在 GLKView 维护的 CAEAGLLayer 上设置可绘制属性不起作用,因为 GLKView 在绑定(bind)其可绘制对象并生成其渲染存储时会覆盖这些属性。使用此方法会强制 GLKView 使用您的类别返回的drawableProperties。

关于iphone - GLKView设置可绘制属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9395743/

相关文章:

opengl-es - opengl es 2.0 android c++ glGetTexImage替代

iPhone - 在哪里可以找到自定义的类似日历的日期选择器?

iphone - iPhone 中特定于设备的资源

iphone - 由于僵尸对象,向下滚动会导致具有自定义 UITableViewCell 的 UITableView 上的应用程序崩溃

iphone - 动画 View 后 UITextView 错误的内容偏移量

android - OpenGL ES 2.0 : Filling in a Sphere instead of it being wireframe

iphone - 在文本中定义选项

ios - 如何在 completionHandler 中设置一个值?

iphone - 呈现 MFMailComposeViewController,但它在可见后立即消失

android - OpenGL ES 2 : Passing scalar vertex attributes to shader program