iphone - 在 iPhone 上将 UIImage 设置为 2D OpenGL ES 的背景

标签 iphone objective-c ios opengl-es core-graphics

经过大量研究,我再次寻求帮助。

我需要创建一个 View ,用户可以在其中将图像放置到背景并在其顶部绘制线/点(触摸事件),然后通过按保存按钮保存“草图”。

所以经过研究我决定拿起this编码并在其之上构建东西,因为它已经完成了我想要的一半(它完成了绘图)。

我的示例是使用 OpenGL 进行绘图,基本上我不关心它是 OpenGL 还是 CoreGraphics,只要它完成就可以了。

我遇到的问题是如何将图像作为我在此示例代码中的 EAGLView 的背景。我的研究只给了我对 OpenGL 经验丰富的开发人员的建议,而不是工作代码片段/解决方案。 如果有人可以帮助我,我将不胜感激。

我需要的只是一个示例,说明如何将 UIImage 放到 EAGLView 背景中,以便用户可以在其上绘制(已有代码)并保存结果。

最佳答案

人们通常不会将 OpenGL 与普通的 UI... View 混合使用。使用 OpenGL 绘制背景图像也很简单:

首先,您需要将图像加载到纹理中。在 GLPaint 中,图像文件作为画笔纹理加载 https://github.com/omeryavuz/glpaint/blob/master/Classes/PaintingView.m函数 initWithCoder

要绘制背景,清除帧缓冲区后绘制的第一件事是具有该纹理的全屏四边形。如果你建立在 GLPaint 之上,那么投影和模型 View 矩阵以及顶点数组状态已经正确设置。所以它归结为

GLfloat vert[] = {0,0, frame.size.width,0, frame.size.width,frame.size.height, 0,frame.size.height};
GLfloat tex[] = {0,0, 1,0, 1,1, 0,1};
GLuint indexes[] = {0, 1, 2, 2, 3, 0};

glBindTexture(GL_TEXTURE_2D, backgroundTexture);
glEnable(GL_TEXTURE_2D);    

glVertexPointer(2, GL_FLOAT, 0, vert);
glTexCoordPointer(2, GL_FLOAT, 0, tex);
glDrawElements(GL_TRIANGLES, 2, GL_UNSIGNED_INT, indexes);

关于iphone - 在 iPhone 上将 UIImage 设置为 2D OpenGL ES 的背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6437665/

相关文章:

iOS 拍照并转换为 Base64 字符串

iphone - 可以在 iPhone 上使用 NSUserDefaults 保存整数数组吗?

iphone - 使用 Interface Builder 将 NSManagedObjectContext 传递给 View

iphone - 在 opengl 中平滑不起作用

objective-c - MPMoviePlayerController 不播放任何视频内容 [由于 ARC 和内存管理]

ios - 在PageViewController中显示模态ViewController

iphone - 如何dequeueReusableCellWithIdentifier : work?

objective-c - 是否可以刷新 UITableView 中的单个 UITableViewCell?

ios - UITableViewController 内部 UINavigationController 和 UITabBarController 底部插入关闭

ios - 无法在我的 iOS 应用程序中检测到 Kontakt.io 信标