如何在 UIView 中绘制 opengl es

Posted

技术标签:

【中文标题】如何在 UIView 中绘制 opengl es【英文标题】:how to draw opengl es in a UIView 【发布时间】:2012-06-25 16:55:27 【问题描述】:

我想在自定义的 UIView 中绘制我的 opengl es 动画,我该怎么做。我发现我需要重写 drawRect 方法。在下面。

#import "myView.h"

@implementation myView

- (id)initWithFrame:(CGRect)frame

    self = [super initWithFrame:frame];
    if (self) 
    // Initialization code
    
    return self;


/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect

    // Drawing code

*/

@end

我已经使用界面生成器绘制了一个视图,我如何链接到该视图并绘制(调用)我的 opengl 动画类。任何人都可以请写一点具体。我是初学者。谢谢。

【问题讨论】:

【参考方案1】:

正如另一位海报所说,您不要使用 drawRect 在视图中实现 OpenGL。您将 OpenGL 层附加到视图。

EAGLView 是一种方式。如果您愿意将您的应用程序限制在 ios 5 或更高版本,您可能需要查看 GLKit。这为你做了很多设置。

不过要小心。 OpenGL 绝不是、塑造或形成初学者的 API。它庞大、复杂且难以使用。有一个巨大的学习曲线。我已经编程了大约 30 年,当我第一次开始学习它时,它简直让我头晕目眩。

【讨论】:

【参考方案2】:

您拥有的一种可能性是让您的视图管理CAEAGLLayer(相对于普通的CALayer)。然后CAEAGLLayer 将呈现您的 GL 绘图代码。

我建议您查看 Apple 在一些 SDK 示例中提供的 EAGLView 类,而不是尝试将自己的子类化为 UIView。查看this sample from Apple,了解如何定义EAGLView 以及如何使用它。

【讨论】:

以上是关于如何在 UIView 中绘制 opengl es的主要内容,如果未能解决你的问题,请参考以下文章