整体思路

本文不采用UIKit的GLKBaseEffect渲染一张图片的显示,而是使用编译链接自定义的着色器(shader)。用GLSL语言来实现自定义顶点/片元着色器,并将图形进行简单的渲染显示。

一、GLKit渲染
  • 利用GLKit渲染加载一张jpg/png图片,请参考之前的文章:OpenGL ES之GLKit的使用功能和API说明。
二、GLSL自定义着色器实现图片渲染的思路说明
  • 创建图层:重写layerClass,将YDWView返回的图层从CALayer替换成CAEAGLLayer,并设置描述属性;
  • 创建上下文:上下文主要是用于保存OpenGL ES中的状态,是一个状态机,不论是GLKIt还是GLSL,都是需要context的;
  • 清空缓存区:buffer分为 frameBuffer 和 renderBuffer 两个大类,都需要清空;
  • 设置RenderBuffer:渲染缓存区
  • 设置FrameBuffer:帧缓存区
  • 开始绘制:读取顶点/片元着色器的程序,并加载shader,编译顶点着色程序/片元着色器程序,然后链接程序,设置顶点、纹理坐标,并处理顶点坐标和纹理。
三、GLSL着色语言
  • GLSL的基础使用、数据类型和常用API请参考:

OpenGL ES之GLSL渲染图片显示的整体流程相关推荐

  1. Android OpenGL ES 学习(十一) –渲染YUV视频以及视频抖音特效

    OpenGL 学习教程 Android OpenGL ES 学习(一) – 基本概念 Android OpenGL ES 学习(二) – 图形渲染管线和GLSL Android OpenGL ES 学 ...

  2. OpenGL ES: (5) OpenGL的基本概念、OpenGL ES 在屏幕产生图片的过程、OpenGL管线(pipeline)...

    一. OpenGL的基本概念 OpenGL 的结构可以从逻辑上划分为下面 3 个部分: 图元(Primitives) 缓冲区(Buffers) 光栅化(Rasterize) 图元(Primitives ...

  3. android平台下OpenGL ES 3.0给图片添加黑白滤镜

    OpenGL ES 3.0学习实践 android平台下OpenGL ES 3.0从零开始 android平台下OpenGL ES 3.0绘制纯色背景 android平台下OpenGL ES 3.0绘 ...

  4. Android音视频学习系列(六) — 掌握视频基础知识并使用OpenGL ES 2.0渲染YUV数据

    系列文章 Android音视频学习系列(一) - JNI从入门到精通 Android音视频学习系列(二) - 交叉编译动态库.静态库的入门 Android音视频学习系列(三) - Shell脚本入门 ...

  5. OpenGL渲染模型 || 3. opengl 将模型成渲染图片

    前言 最近项目中需要使用到OpenGL对3D模型进行渲染. 已有数据为: 带纹理的3D模型 模型上的关键点.   需要实现的功能: 读取和保存 带纹理的3D模型.读取模型的关键点 对模型进行渲染,保存 ...

  6. OpenGL ES之GLSL实现仿抖音“缩放”“灵魂出窍”“抖动”“闪白”“毛刺”“幻觉”等动态滤镜效果

    无滤镜效果 "动态滤镜"效果的实现准备工作的代码与"无分屏滤镜"中的实现逻辑和流程一致,只需要修改相应的底部item数组及对应的着色器名称等,这里不再说明这部分 ...

  7. OpenGL ES之GLSL实现仿抖音“灰度滤镜”和“颠倒滤镜”效果

    无滤镜 "无滤镜"效果的实现准备工作的代码与"无分屏滤镜"中的实现逻辑和流程一致,只需要修改相应的底部item数组及对应的着色器名称等,这里不再说明这部分内容, ...

  8. OpenGL ES之GLSL实现多种“马赛克滤镜”效果

    ⻢赛克效果 "⻢赛克效果"就是把图⽚的⼀个相当⼤⼩的区域⽤同⼀个点的颜⾊来表示,可以认为是⼤规模的降低图像的分辨率,⽽让图像的⼀些细节隐藏起来. 无马赛克滤镜 "无滤镜& ...

  9. OpenGL ES 多目标渲染(MRT)

    OpenGL ES 多目标渲染 OpenGL ES 多目标渲染 OpenGL ES 多目标渲染(MRT),即多重渲染目标,是 OpenGL ES 3.0 新特性,它允许应用程序一次渲染到多个缓冲区. ...

最新文章

  1. linux设置mysql定时任务_原创 Linux下实现Mysql定时任务备份数据
  2. Machine Learning on Spark——统计基础(二)
  3. CAN总线抗干扰的六种解决方案
  4. [渝粤教育] 西南科技大学 畜牧概论 在线考试复习资料
  5. 阿里云2020上云采购季,你适合买什么云产品?
  6. linux 内核编译不能打字,linux系统升级后,手动编译的kernel无法启动问题
  7. 消息幂等(去重)通用解决方案,RocketMQ
  8. 2017.10.7 最长上升子序列 思考记录
  9. 高中二年级会考计算机考试试题,高中二年级学考是怎么回事 和会考的区别是什么...
  10. Python复杂对象转JSON
  11. 金狐超级软件盘 07.14更新
  12. 遗传算法GA优化BPNN
  13. PointRCNN: 3D Object Proposal Generation and Detection from Point Cloud【翻译】
  14. django 框架 SQL 语句 查询篇
  15. 微信小程序注册教程-详细图文教程
  16. 书单|普通员工到职场精英,这一步怎样跨越?
  17. 学会System Generator(2)数字滤波器设计
  18. 10路智能电动自行车充电桩功能特点优势
  19. 上新 | 追光几何(EverCraft)全新交互界面重磅亮相!
  20. android listview嵌套progreesbar更新进度 ftp

热门文章

  1. face recognition[MobiFace]
  2. github删除错误的commit并保留之前的提交
  3. Vue.js:监听属性
  4. hdu3016 线段树+简单DP
  5. iOS-控件响应用户控制事件之事件处理
  6. 配置错误:未能使用提供程序“RsaProtectedConfigurationProvider”进行解密。提供程序返回错误信息为: 打不开 RSA 密钥容器。...
  7. 7-25 雨刷程序功能扩展设计 (100 分)
  8. mysql经常问到的面试题_20道BAT面试官最喜欢问的JVM+MySQL面试题(含答案解析)...
  9. c#窗体程序生成错误_用C#语言做的窗体程序中出错恶劣怎么办?
  10. MySQL安装与基本使用