如何在 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的主要内容,如果未能解决你的问题,请参考以下文章

如何在Android上使用OpenGL ES 2.0绘制点

如何在Android上使用OpenGL ES 2.0绘制点

OPENGL ES 2.0 知识串讲 ——OPENGL ES 详解II(传入绘制信息)

OPENGL ES 2.0 知识串讲 ——OPENGL ES 详解II(传入绘制信息)

如何在Android上使用OpenGL ES 2.0绘制点

Opengl es 2.0 在视频上绘制位图叠加