OpenGL ES 3.0 从入门到精通系统性学习教程

为什么要写这个教程

因为在工作中频繁使用 OpenGL ES 做一些特效、滤镜之类的效果,加上平时学到的的知识点也比较细碎,就想着去系统地学习下 OpenGL ES 相关开发知识,并将学习过程记录下来。

准备知识

一些同学反映,学习这个教程感觉有点门槛。其实,就是需要懂一点 C/C++ 开发知识。

基础篇和应用篇

该教程分为基础篇和应用篇,基础篇主要是讲解 GLES 3.0 的主要核心知识点,而应用篇主要是利用基础篇的知识实现一些常见的特效和功能。

基础篇

OpenGL ES 3.0 开发(01):绘制一个三角形

OpenGL ES 3.0 开发(02):纹理映射

OpenGL ES 3.0 开发(03):YUV 渲染

OpenGL ES 3.0 开发(04):VBO、EBO 和 VAO

OpenGL ES 3.0 开发(05):FBO 离屏渲染

OpenGL ES 3.0 开发(06):EGL

OpenGL ES 3.0 开发(07):Transform Feedback

OpenGL ES 3.0 开发(08):坐标系统

OpenGL ES 3.0 开发(09):光照基础

OpenGL ES 3.0 开发(10):深度测试

OpenGL ES 3.0 开发(11):模板测试

OpenGL ES 3.0 开发(12):混合

OpenGL ES 3.0 开发(13):实例化(Instancing)

OpenGL ES 3.0 开发(14):粒子(Particles)

OpenGL ES 3.0 开发(15):立方体贴图(天空盒)

OpenGL ES 3.0 开发(16):相机预览

OpenGL ES 3.0 开发(17):相机基础滤镜

OpenGL ES 3.0 开发(18):相机 LUT 滤镜

OpenGL ES 3.0 开发(19):相机抖音滤镜

OpenGL ES 3.0 开发(20):3D 模型

OpenGL ES 3.0 开发(21):3D 模型加载和渲染

OpenGL ES 3.0 开发(22):PBO

OpenGL ES 3.0 开发(23):多重渲染目标(MRT)

OpenGL ES 3.0 开发(24):帧缓冲区位块传送(Blit)

OpenGL ES 3.0 开发(25):TBO(GLES 3.1)

OpenGL ES 3.0 开发(26):UBO(GLES 3.2)

应用篇

OpenGL ES 实现动态(水波纹)涟漪效果

OpenGL ES 实现 3D 阿凡达效果

OpenGL ES 实现刮刮卡和手写板功能

OpenGL ES 实现实时音频的可视化

OpenGL ES 实现大小头和头部晃动效果

OpenGL ES 实现瘦脸大眼效果

OpenGL ES 绘制贝塞尔曲线

OpenGL ES 实现瘦身大长腿效果

OpenGL ES 实现心动特效

OpenGL ES 调试工具

OpenGL ES 传输超大数组给着色器程序

面试中经常被问到的 OpenGL ES 对象,你知道的有哪些?

Android OpenGL ES 渲染图像读取哪家强

利用 OpenGL ES 给视频播放器和相机做个字符画滤镜

使用 OpenGL 实现 RGB 到 YUV 的图像格式转换

OpenGL ES 共享上下文时,可以共享哪些资源?

OpenGL ES 文字渲染方式有几种?

OpenGL ES 文字渲染进阶:渲染中文字体

OpenGL ES + 人像抠图实现人像留色

OpenGL ES + GLTranslations 实现各种图像转场效果

OpenGL ES 实现抖音传送带特效

OpenGL ES 实现抖音“蓝线挑战”特效

OpenGL ES 利用 Shader 实现 RGBA 到 NV21 图像格式转换

OpenGL ES 修图(P 图)功能

OpenGL ES 抖音“传送带“特效实现终极版

OpenGL ES 3.0 帧缓冲区失效 glInvalidateFramebuffer

OpenGL ES 如何直接渲染 P010、P016 格式图像?

OpenGL ES 渲染 NV21、NV12、I420、YV12、YUYV、UYVY、I444(建议收藏)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/705027.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32存储左右互搏 QSPI总线FATS文件读写FLASH W25QXX

STM32存储左右互搏 QSPI总线FATS文件读写FLASH W25QXX FLASH是常用的一种非易失存储单元,W25QXX系列Flash有不同容量的型号,如W25Q64的容量为64Mbit,也就是8MByte。这里介绍STM32CUBEIDE开发平台HAL库Quad SPI总线实现FATS文件操作W25Q各型号…

redis持久化失败问题(MISCONF Redis is configured to save RDB snapshots, but ......)问题解决

今天同事反应测试环境业务一直报错,好像是redis持久化出现了问题,并给出了错误信息,让我帮忙看一下,说明明还有2G内存为何还会报错 MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persis…

mysql 安装 与 使用

1.安装地址(社区免费版本) https://dev.mysql.com/downloads/mysql/ 2.查看端口 ****是否被占用(例子 3306端口) netstat -an | find "3306" 3.配置环境 系统变量名 变量名:MYSQL_HOME 变量值&#…

第十三天-mysql交互

目录 1.安装MySQL connector 方式1:直接安装 方式2:下载 2.创建链接 3.游标Cursor 4.事务控制 5. 数据库连接池 1. 使用 6.循环执行SQL语句 不了解mysql的可以先了解mysql基础 1.安装MySQL connector 1. MySQL connector 是MySQL官方驱动模块…

jmeter 按线程数阶梯式压测数据库

当前版本: jmeter 5.6.3mysql 5.7.39 简介 JMeter 通过 bzm - Concurrency Thread Group 来实现阶梯式压测,它并不是JMeter的官方插件,而是一种由Blazemeter提供的高级线程组插件。可以在不同的时间内并发执行不同数量的线程,模拟…

音频常用测试参数

一、总谐波失真(THDN) 总谐波失真指音频信号源通过功率放大器时,由于非线性元件所引起的输出信号比输入信号多出的额外谐波成份。谐波失真是由于系统不是完全线性造成的,我们用新增加总谐波成份的均方根与原来信号有效值的百分比来…

MySQL之Pt-kill工具

工具下载 [rootlocalhost1 bin]# wget percona.com/get/percona-toolkit.tar.gz [rootlocalhost1 bin]# yum install perl-DBI [rootlocalhost1 bin]# yum install perl-DBD-MySQL [rootlocalhost1 bin]# ./pt-kill --help1、每10秒检查一次,发现有 Query 的进程就…

3D生成式AI模型与工具

当谈到技术炒作时,人工智能正在超越虚拟世界,吸引世界各地企业和消费者的注意力。 但人工智能可以进一步增强虚拟世界,至少在某种意义上:资产创造。 AI 有潜力扩大用于虚拟环境的 3D 资产的创建。 AI 3D生成使用人工智能生成3D模…

开发知识点-.netC#图形用户界面开发之WPF

C#图形用户界面开发 NuGet框架简介WinForms(Windows Forms):WPF(Windows Presentation Foundation):UWP(Universal Windows Platform):MAUI(Multi-platform App UI):选择控件参考文章随笔分类 - WPF入门基础教程系列

什么时候要用到Reflect API?

参考文档 https://www.zhihu.com/question/460133198 https://cn.vuejs.org/guide/extras/reactivity-in-depth.html https://juejin.cn/post/7103764386220769311 Reflect API 一般搭配 Proxy API 一起使用。什么是 Proxy API 呢? 先回顾下 vue 的数据响应性是如何…

投票项目_注册功能版本迭代

V0版本: 简单的注册,前端先进行初步核对,两次输入的密码是否相等?用户账号和密码是否符合要求?核对成功后前端传来账号密码,拿到用户名去数据库核对,如果没有找到相同的用户名就插入到数据库,找到相同的用户名就返回”用户已存在” V1版本: 加入了uuid 1. 导入依赖 <!-- …

《银幕上的编码传奇:计算机科学与科技精神的光影盛宴》

目录 1.在电影的世界里&#xff0c;计算机科学不仅是一门严谨的学科&#xff0c;更是一种富有戏剧张力和人文思考的艺术载体。 2.电影作为现代文化的重要载体&#xff0c;常常以其丰富的想象力和视觉表现力来探讨计算机科学和技术的各种前沿主题。 3.电影中的程序员角色往往…

GDB之(3)加载指定动态库文件

GDB之(3)加载指定动态库文件 Author&#xff1a;Once Day Date&#xff1a;2024年2月26日 漫漫长路&#xff0c;才刚刚开始… 全系列文章请查看专栏: Linux实践记录_Once-Day的博客-CSDN博客 推荐参考文档&#xff1a; gdb 查找动态库方法_info sharedlibrary-CSDN博客GDB…

swift -- 系统语音识别(转文字)

文章目录 一、系统类1. 导入系统库2. SFSpeechRecognizer声音处理器3. SFSpeechAudioBufferRecognitionRequest 语音识别器4. AVAudioEngine 处理声音的数据5. SFSpeechRecognitionTask 语言识别任务管理器 二、代码整理1. 初始化属性2. 判断权限3. 开始语音识别4. 停止语音识别…

服务器权限:Error: EACCES: permission denied, open‘/Cardiac/uniquC.csv

背景&#xff1a; 我想在服务器上传一个文件uniquC.csv&#xff0c;但是服务器说我没有权限 解决方案&#xff1a; 1. 查看目前是否存在对文件夹的权限 ls -ld /Cardiac/ # your fold path 此时&#xff0c;我发现 这也意味着root也没有赋予写的权限。 2. 拿到root权限 …

关于Ajax的入门基础教学

AJAX概述 AJAX&#xff08;Asynchronous JavaScript and XML&#xff09;是一种用于创建交互式网页应用程序的技术&#xff0c;它可以在不重新加载整个页面的情况下向服务器发送请求并接收响应。这种技术使得网页可以实现异步通信&#xff0c;提高了用户体验和页面的响应速度。…

Kotlin多线程

目录 线程的使用 线程的创建 例一&#xff1a;创建线程并输出Hello World Thread对象的用法 start() join() interrupt() 线程安全 原子性 可见性 有序性 线程锁 ReentrantLock ReadWriteLock 线程的使用 Java虚拟机中的多线程可以1:1映射至CPU中&#xff0c;即…

ARM 版银河麒麟桌面系统下 Qt 开发环境搭建指南

目录 前言安装Linux ARM 版 QtCreator配置 Qt Creator配置构建套件 第一个麒麟 Qt 应用程序小结 前言 在上一篇文章信创ARM架构QT应用开发环境搭建中建议大家使用 Ubuntu X86 系统作为信创 ARM 架构 QT 应用的开发环境&#xff0c;里面使用了交叉编译的方式。这对于自己的 Qt …

vue3 + vite + ts 中使用less文件全局变量

文章目录 安装依赖新建css变量文件全局引入css变量文件使用css变量 一、安装依赖 npm install less less-loader --save-dev 二、新建CSS变量文件 (1) :在根目录下的src文件中 src-> asset -> css ->glibal.less // glibal.less :root{--public_background_font_Col…

Dubbo知识点大全

“ 分布式应用场景有高并发,高可扩展和高性能的要求。还涉及到,序列化/反序列化,网络,多线程以及设计模式的问题。幸好 Dubbo 框架将上述知识进行了封装,让程序员能够把注意力放到业务上。 概念和架构 Provider:暴露服务的服务提供方Consumer:调用远程服务消费方Regist…