OpenGL ES之Swift使用GLSL语言渲染图片的显示

举报
Serendipity·y 发表于 2022/02/17 00:24:41 2022/02/17
【摘要】 整体思路 一、GLSL和iOS 本片主要使用编译链接自定义的shader(顶点着色器/片元着色器)。用简单的GLSL语言来实现顶点、片元着色器,并对图形进行简单的变换。 OpenGL ES只是用...

整体思路

一、GLSL和iOS
  • 本片主要使用编译链接自定义的shader(顶点着色器/片元着色器)。用简单的GLSL语言来实现顶点、片元着色器,并对图形进行简单的变换。
  • OpenGL ES只是用来做渲染的,所iOS要提供一个载体,就是CAEAGLLayer,创建的方法是,通过重写UIView的类属性(OC中是类方法)返回CAEAGLLayer.self。它是一个对core animation的封装,它能满足所有的OpenGLES的方法访问。
  • CAEAGLLayer:在制定该图层关联的视图作为渲染器的目标图形上下文之前,可以使用drawableProperties属性更改呈现属性。此属性允许您配置呈现表面的颜色格式以及表面是否保留其内容。 因为OpenGL ES渲染的效果是要提交到用户使用的核心动画上,所以使用在该layer上的任何效果和动画都会影响渲染的3D效果,为了时性能最佳你应该做一下操作:设置图层为不透明,设置图层边界以匹配显示的尺寸,确保图层没有做变换。
  • 尽量避免在CAEAGLLayer添加其layer。如果必须要添加其他非OpenGL内容,那么如果将透明的2D内容置于GL内容之上,并确保OpenGL内容是不透明的且没有转换过,那么性能还是可以接受的。当在竖屏上绘制横向内容时,应该自己旋转内容,而不是使用CAEAGLLayer转换来旋转它。
二、GLSL实现图片渲染的思路
  • 创建图层:重写layerClass,将YDWView返回的图层从CALayer替换成CAEAGLLayer,并设置描述属性;
  • 创建上下文ÿ

文章来源: blog.csdn.net,作者:Serendipity·y,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/Forever_wj/article/details/107704688

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。