我是OpenGL
的新用户,我正在寻找用于在屏幕上绘制简单UIImage
的任何代码段 - 与UIImageView
完全相同。
互联网上充满了像这样的代码示例,但所有这些代码都为图片添加了一些平滑处理,当我(在我的代码中)我在OpenGLView
上添加UIImageView
时,用户可以看到这一刻。 UIImage
上的文字变得更加平滑。
答案 0 :(得分: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缩小图像的方式之间的差异,如果您将图像放置在这些视图中的大小不同于它们的视图显示在。