首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏MelonTeam专栏

    [iOS] OpenGL ES 2.0之初体验

    不过这一次,我们要用到的只有CAEAGLLayer。 加入到工程中: ? : CAEAGLLayer是CALayer的子类,它提供了一个OpenGLES渲染环境。 各种各样的OpenGL绘图缓冲的底层可配置项都需要用CAEAGLLayer完成。 这样当我们调用self.layer时返回的就会是一个CAEAGLLayer对象,我们才能在其上描绘OpenGL内容。 + (Class)layerClass { return [CAEAGLLayer class]; } - (void)setupLayer { _eaglLayer = (CAEAGLLayer

    2.1K90发布于 2018-01-04
  • 来自专栏Flutter

    Flutter 渲染引擎详解 - iOS GL 篇

    IOSSurfaceGL::IOSSurfaceGL(fml::scoped_nsobject<CAEAGLLayer> layer, std::shared_ptr IOSRenderTargetGL 主要是用来持有 CAEAGLLayer 对象,和从 IOSContextGL 获得的用于光栅化的 EAGLContext 对象,并为 CAEAGLLayer 分配 Framebuffer Flutter 在 iOS GL 上进行光栅化的操作如下: 将目标输出的 Surface,也就是 CAEAGLLayer,跟为它分配的 Renderbuffer GL 对象绑定,Renderbuffer 作为对应的 Framebuffer 的 Color Attachment,也就是对这个 Framebuffer 写入,光栅化后像素值的结果实际上是写入到对应的 CAEAGLLayer 的内部像素缓冲区里面 ::presentRenderbuffer 来请求 CAEAGLLayer 提交绘制完毕的像素缓冲区。

    1.8K10发布于 2020-10-23
  • 来自专栏关键帧Keyframe

    一看就懂的 OpenGL 基础概念(2):EGL,OpenGL 与设备的桥梁丨音视频基础

    OpenGL ES 通过 CAEAGLLayer 与 Core Animation 连接,CAEAGLLayer 是一种特殊类型的 Core Animation 图层,它的内容来自 OpenGL ES 分配缓冲区需要的宽、高、像素格式等信息都会从 layer 中取得; 需要注意的是,如果 CAEAGLLayer 的 bounds 或其他属性变了,需要重新分配 ColorRenderBuffer 的存储空间 ,否则会出现 ColorRenderBuffer 和 CAEAGLLayer 的尺寸不匹配。 类型来获得了一个 CAEAGLLayer 对象用于 OpenGL ES 渲染。 同样的,如果你觉得上述流程太麻烦,iOS 平台还提供了封装好的 GLKView 来简化我们使用 OpenGL ES,GLKView 是对 CAEAGLLayer 的封装,内嵌了配置 Core Animation

    3.9K10编辑于 2022-11-29
  • 来自专栏每日一篇技术文章

    OpenGLES_入门01_创建第一个工程

    学习目标 创建一个OpenGL 工程,用黄色渲染视图 实现步骤 1.创建工程(一个普通的工程就行) 2.创建一个视图(继承UIView) 3.设置这个视图的Layer层为CAEAGLLayer 类型 让学习成为一种习惯 第三步 设置OpenGLView 的layer层为CAEAGLLayer +(Class)layerClass{ return [CAEAGLLayer class]; } 第四步 GL_FRAMEBUFFER)); } 第八步 OpenGL ES渲染缓存对象绑定到layer上 [context renderbufferStorage:GL_RENDERBUFFER fromDrawable:(CAEAGLLayer

    57920发布于 2018-09-14
  • 来自专栏清墨_iOS分享

    OpenGLES-01 渲染第一步

    1.创建你的项目并新建MyGLView 新建MyGLView.png 2.修改你创建的MyGLView添加如下变量(变量后面会有介绍) @interface MyGLView () { CAEAGLLayer frameBuffer; // } 3.在 MyGLView.m 中添加如下函数: +(Class)layerClass{ //OpenGL内容只会在此类layer上描绘 return [CAEAGLLayer class]; } 因为OpenGLES的描绘必须在CAEAGLLayer上才能显示出来,所以我们需要重写这个函数,修改view默认的layer返回类型 4.设置_eaglLayer的属性,添加如下函数 : - (void)setupLayer { _eaglLayer = (CAEAGLLayer*) self.layer; // CALayer 默认是透明的,透明对性能影响大

    1.1K70发布于 2018-05-07
  • 来自专栏落影的专栏

    Metal入门教程(八)Metal与OpenGL ES交互

    回忆下OpenGL ES教程里的内容,苹果用CAEAGLLayer来承载OpenGL ES的内容,最终渲染结果都是CAEAGLLayer上颜色缓冲区的数据。 既然我们判断渲染结果没有问题,那么应该从CAEAGLLayer与UILayer的混合开始检查。 通过排查CAEAGLLayer的属性设置,终于发现问题所在是eaglLayer.opaque = YES;! CAEAGLLayer的不透明属性设置为YES,有利于性能的优化,但是在demo里是会造成额外的影响! 通过把opaque属性设置成NO,问题终于解决。

    3K10发布于 2018-08-21
  • 来自专栏Code_iOS

    OpenGL ES 2.0 (iOS)[01]: 一步从一个小三角开始

    CAEAGLLayer 替换默认的 CALayer,配置绘制属性; b. **EAGLContext 绑定渲染的窗口 (on-screen),CAEAGLLayer **; 扩展: ** CAEAGLLayer ** 继承链: ? CALayer有的,当然 CAEAGLLayer 也有; 作用: a. 修改 opaque 属性为 YES ( CAEAGLLayer.opaque = YES; ); b. 不要修改 Transform ; c. 配置 drawableProperties ,就是绘制的属性 - (void)commit { CAEAGLLayer *glLayer = (CAEAGLLayer *)self.layer

    2.6K40发布于 2018-09-04
  • 来自专栏大壮

    OpenGL ES 使用着色器(OC)(一)

    几乎每行代码都会增加注释 1.OpenGL ES 3.0环境 在iOS需要先引用 <OpenGLES/ES2/gl.h> <GLKit/GLKit.h> 上屏 上屏部分需要使用GLKView,CAEAGLLayer self.view.bounds.size.width); _glkView.backgroundColor = [UIColor clearColor]; } return _glkView; } 其中CAEAGLLayer 初始化: - (CAEAGLLayer *)myEagLayer { if (_myEagLayer == nil) { _myEagLayer = (CAEAGLLayer *

    84520发布于 2020-06-29
  • 来自专栏天天P图攻城狮

    iOS GPUImage源码解读(一)

    插到视图里去 UIView的contentMode、hidden、backgroundColor等属性都可以正常使用 里面比较关键的方法主要有这么2个: // 申明自己的CALayer为CAEAGLLayer + (Class)layerClass { return [CAEAGLLayer class]; } - (void)createDisplayFramebuffer { [GPUImageContext GPUImageContext sharedImageProcessingContext] context] renderbufferStorage:GL_RENDERBUFFER fromDrawable:(CAEAGLLayer CAEAGLLayer iOS内建的GPU到屏幕的联动方法 5. fastTextureUpload iOS5开始支持的一种CVOpenGLESTextureCacheRef和CVImageBufferRef

    7.4K120发布于 2018-02-01
  • 来自专栏大壮

    OpenGL ES 3.0 使用着色器(OC)

    self.view.bounds.size.width); \_glkView.backgroundColor = [UIColor clearColor]; } return \_glkView; } 其中CAEAGLLayer 初始化: - (CAEAGLLayer \*)myEagLayer { if (\_myEagLayer == nil) { \_myEagLayer = (CAEAGLLayer

    1.5K80发布于 2020-06-16
  • 来自专栏清墨_iOS分享

    OpenGLES-07 纹理

    import "MyGLView.h" #import "GLESUtils.h" #import <OpenGLES/ES3/gl.h> @interface MyGLView () { CAEAGLLayer } @end @implementation MyGLView +(Class)layerClass{ //OpenGL内容只会在此类layer上描绘 return [CAEAGLLayer program [self render]; } return self; } - (void)setupLayer { _eaglLayer = (CAEAGLLayer texCoordSlot; //纹理坐标槽位 GLuint _ourTextureSlot; //纹理对象槽位 在MyGLView.m里 @interface MyGLView () { CAEAGLLayer

    1.6K130发布于 2018-05-07
  • 来自专栏关键帧Keyframe

    RenderDemo(1):用 OpenGL 画一个三角形丨音视频工程示例

    1、iOS Demo iOS 平台对 EGL 的实现是 EAGL(Embedded Apple Graphics Library),其中 CAEAGLLayer 就是一种可以支持 OpenGL ES 绘制的图层类型 assign) GLsizei width; @property (nonatomic, assign) GLsizei height; @property (nonatomic, strong) CAEAGLLayer _eaglLayer = (CAEAGLLayer *) self.layer; _eaglLayer.opacity = 1.0; _eaglLayer.drawableProperties // 把 Renderbuffer 的内容显示到窗口系统 (CAEAGLLayer) 中。 free(infoLog); } } } #pragma mark - Override + (Class)layerClass { return [CAEAGLLayer

    1.7K31编辑于 2022-11-29
  • 来自专栏小黑娃Henry

    OpenGLES(五)- ESLS案例:纹理贴图OpenGLES(五)- ESLS案例:纹理贴图

    开始绘制 - 着色器创建 全局属性定义 //变量名基本就是解释 @property(nonatomic,strong)CAEAGLLayer *myLayer; @property(nonatomic, EAGLLayer获取,设置layer图层 + (Class)layerClass{ //1.需要重写view的子类方法,返回特定的layer,否则所有绘制动作是无效的 return [CAEAGLLayer class]; } -(void)setupLayout { //2.获取layer //view中存在一个特殊的图层,用于OpenGL的渲染 self.myLayer = (CAEAGLLayer

    1.4K20发布于 2021-08-09
  • 来自专栏落影的专栏

    OpenGL ES实践教程(七)多滤镜叠加处理

    激活纹理单元1,上传初始图像; 配置一个新的帧缓存,以纹理单元1作为输入,以纹理单元0作为帧缓存的颜色输出(glFramebufferTexture2D函数); 配置一个新的帧缓存,以纹理单元0作为输入,以CAEAGLLayer 饱和度和色温.gif 具体步骤 1、初始化OpenGL ES配置 初始化数据->设置CAEAGLLayer->选择OpenGL ES上下文->初始化帧缓存->编译shader->配置顶点数组信息。

    2.8K40发布于 2018-04-27
  • 来自专栏清墨_iOS分享

    OpenGL与OpenGL在移动端的应用

    image.png 2.layer,OpenGLES的描绘必须在CAEAGLLayer上才能显示出来,所以我们需要重写这个函数,修改view默认的layer返回类型,从CAEAGLLayer可以看出,它也属于 +(Class)layerClass{//默认是CALayer //OpenGL内容只会在此类layer上描绘 return [CAEAGLLayer class]; } 3.context -(void)setupLayerAndContext { _eaglLayer = (CAEAGLLayer *)self.layer; _eaglLayer.opaque = YES

    3.5K30发布于 2019-11-15
  • 来自专栏清墨_iOS分享

    OpenGLES讲解稿

    我们需要新建一个继承于UIView的类,接下来是重写这个子类View的+(Class)layerClass{}类方法,这个方法默认返回的是[CALayer Class],我们使用openGLES,这里必须得返回[CAEAGLLayer class],这也没什么好说的,规定,我们继续完善这个CAEAGLLayer,看以下的layer属性设置。 看一下就行吧,它设置的属性是不维持渲染内容和颜色格式为RGBA8,从CAEAGLLayer可以看出,CA嘛,它也属于Core Animation。 _eaglLayer = (CAEAGLLayer *)self.layer; _eaglLayer.opaque = YES; _eaglLayer.drawableProperties

    1.5K20发布于 2020-01-15
  • 来自专栏每日一篇技术文章

    OpenGL ES _ 入门练习_005

    创建一个CAEAGLayer 层的view 视图,创建一个继承UIView的类,重写一个方法: +(Class)layerClass{ return [CAEAGLLayer class]; } 第一步就完成了 GL_RENDERBUFFER, _colorFramebuffer); [self.eagContext renderbufferStorage:GL_RENDERBUFFER fromDrawable:(CAEAGLLayer

    59930编辑于 2022-05-13
  • 来自专栏一“技”之长

    iOS开发CoreAnimation解读之二——对CALayer的分析

    3.CAEAGLLayer CAEAGLLayer可以通过OpenGL ES来进行界面的绘制。

    1.5K20发布于 2018-08-16
  • 来自专栏iOSer成长记录

    iOS-Core系列框架介绍(一)

    QuartzCore.CAMediaTiming import QuartzCore.CAMediaTimingFunction // 特殊图层 import QuartzCore.CALayer import QuartzCore.CAEAGLLayer

    1.2K30发布于 2018-06-29
  • 来自专栏音视频直播技术专家

    iOS下 WebRTC 视频渲染

    创建 OpenGL View 在iOS中,有两种展示层,一种是 GLKView,另一种是 CAEAGLLayer。WebRTC中使用GLKView进行展示。CAEAGLLayer暂不做介绍。

    2.6K30发布于 2020-04-02
领券