1

我是新手OpenGL,正在寻找任何用于UIImage在屏幕上绘制简单的代码片段 - 完全一样UIImageView

互联网上到处都是这样的代码示例,但都为图片添加了一点点平滑,当我(在我的代码中)添加一个OpenGLViewover aUIImageView时,用户可以看到这一刻。上的文字UIImage变得稍微平滑了一点。

4

1 回答 1

2

对于现有的解决方案,您可以使用我的开源GPUImage框架中的 GPUImageView,再加上 GPUImagePicture 来拉入您的 UIImage。执行此显示的代码如下所示:

UIImage *inputImage = [UIImage imageNamed:@"image.png"];
GPUImagePicture *stillImageSource = [[GPUImagePicture alloc] initWithImage:inputImage];
GPUImageView *imageView = (GPUImageView *)self.view;
[stillImageSource addTarget:imageView];
[stillImageSource processImage];

这个框架的重点是执行基于 OpenGL ES 的图像和视频处理,所以这是你可以用框架做的最基本的事情。过滤器和其他类型的图像处理操作可以添加到从图像到视图的链中。

这个基于 OpenGL ES 的图像视图具有三种不同的填充模式,可以通过fillMode属性设置,但默认情况下它会拉伸图像以填充视图。您应该能够使用此属性来匹配 UIImageView 的填充模式。

您可以检查 GPUImageView 的代码,以了解我如何获取纹理并根据这些不同的填充模式和可能的图像旋转来显示它。基本上,我只是使用两个三角形来建立一个矩形,并使用一个直通着色器在该矩形内显示一个纹理,这几乎是其他人在这种情况下所做的。

您看到的平滑差异可能来自 GPU 上过滤纹理的方式与 Core Graphics 如何缩小图像的差异,如果您将图像放置在这些视图中,这些视图的大小与它们显示的视图不同。

于 2012-05-15T23:32:55.710 回答