这门课解决什么工作场景
短视频和直播已成为内容创作的基础设施,而视觉特效则是提升用户留存与转化的核心手段。市场上大量App内置的美颜、滤镜、AR贴纸功能,底层几乎都依赖图形渲染技术。传统开发模式往往只能调用系统API,难以实现高度定制化的实时特效。OpenGL作为跨平台的底层图形接口,允许开发者直接操控GPU,逐帧处理图像数据。这门课程聚焦于将OpenGL与AI算法结合,解决的是“如何让视频画面实时达到专业级修饰效果”的工程落地问题。它不讲解抽象的图形学理论,而是直接指向美颜相机、视频滤镜、动态追踪等具体应用场景,填补了从算法原理到移动端产品落地之间的技术空白。
适合什么基础、建议先看哪几块
本课程面向有一定编程基础(熟悉C++或Java/Kotlin)但缺乏图形学经验的开发者。前提是你不需要精通shader编写,因为课程会从零搭建知识体系。建议学习路径如下:首先攻克OpenGL基础概念,理解坐标系、顶点着色器与片段着色器的配合逻辑,这是所有特效的地基;其次进入纹理映射与变换部分,掌握如何将摄像头采集的画面实时渲染到屏幕;最后再切入AI整合环节,学习如何将面部关键点检测等模型输出与GPU渲染管线结合。不要跳过基础模块直接看特效实现,否则面对复杂的光照与变形算法时会迅速卡壳。课程资料中的代码示例是配合理论的关键,务必跟着动手配置渲染环境。
学完能独立做什么、资料怎么配合练习
完成系统学习后,你将具备独立开发实时视频特效引擎的能力。具体而言,你可以实现基础美颜(磨皮、美白)、实时滤镜(色调映射、光影效果)以及基于面部追踪的动态特效(如虚拟贴纸、表情驱动)。在实战层面,你能够从零搭建一个具备高性能渲染能力的移动端相机模块。资料包中通常包含核心代码模板与测试素材,建议采用“阅读原理—复现代码—修改参数观察效果—集成新算法”的循环方式练习。特别是对于Shader部分的代码,不要仅复制粘贴,应尝试调整参数数值,观察GPU执行结果的变化,从而建立对图形渲染直觉。通过这种实操训练,最终能将课堂所授转化为可展示的项目作品,适应当前市场对复合型图形开发人才的迫切需求。
课程目录
├── 1-课程介绍及学习指南/ │ └── [ 24M] 1-1 视频渲染-导学 ├── 2-为什么应该学好OpenGL?/ │ └── [ 28M] 2-1 为什么要选择OpenGL及OpenGL的发展 ├── 3-在系统学习OpenGL特效之前,需要先学会如何实现一个照相机?/ │ ├── [ 22M] 3-1 _原理_清楚Android相机采集原理 │ ├── [ 27M] 3-2 _原理_Android系统下图像渲染原理 │ ├── [ 49M] 3-3 _实战_带你创建一个最简单的Android工程并实现相机操作界面 │ ├── [ 34M] 3-4 _实战_申请相机权限并实现拍照功能(一) │ ├── [ 58M] 3-5 _实战_申请相机权限并实现拍照功能(二) │ ├── [ 49M] 3-6 _实战_定义相机预览界面并展示采集到的图片 │ ├── [ 59M] 3-7 _实战_设置闪光变焦等相机参数 │ ├── [ 23M] 3-8 _理论_实现相机拍照功能(一) │ ├── [ 73M] 3-9 _实战_实现相机拍照功能(二) │ └── [ 50M] 3- 10 _实战_实现前置摄像头与后置摄像头切换 ├── 4-掌握渲染环境是实现特效的基石/ │ ├── [ 41M] 4-1 _原理_图形渲染管线清楚图形渲染的流程是怎样的 │ ├── [ 35M] 4-2 _原理_Android系统下渲染管线的建立与图形渲染管线的区别 │ ├── [ 40M] 4-3 _原理_以GLSurfaceView为例讲解它是如何构建OpenGLES渲染管线的 │ └── [ 32M] 4-4 _实战_使用GLSurfaceView完成OpenGL ES渲染管线的建立 ├── 5-OpenGL基础实战第一步:如何基于Shader(着色器)绘制一个三角形?/ │ ├── [ 23M] 5-1 什么是Shader?为什么要使用它渲染图像 │ ├── [ 11M] 5-2 掌握好坐标系才能确定图形的起点在哪儿 │ ├── [ 33M] 5-3 详解着色器作用及其语法 │ ├── [ 25M] 5-4 _实战_编写着色器程序及着色器数据为绘制三角形做好准备 │ ├── [ 15M] 5-5 Shader程序的编译与加载 │ ├── [ 41M] 5-6 _实战_Shader程序的编译与加载 │ └── [ 54M] 5-7 _实战_使用OpenGL完成三角形的绘制 ├── 6-OpenGL基础实战第二步:如何轻松实现图像的放大缩小、旋转与平移?/ │ ├── [ 13M] 6-1 图形学的本质是数学,让我们从向量开始 │ ├── [ 23M] 6-2 掌握向量的基本运算-向量的加法与点乘 │ ├── [ 15M] 6-3 掌握向理的基本运算-向量的叉乘 │ ├── [ 17M] 6-4 掌握矩阵的基本运算,为图形变换打好基础 │ ├── [ 19M] 6-5 基于矩阵实现各种2D变换 │ ├── [ 13M] 6-6 各种图形变换的核心-齐次坐标 │ ├── [ 12M] 6-7 利用齐次坐标实现各种3D变换 │ └── [ 36M] 6-8 _实战_基于齐次坐标实现_平移-旋转-缩放_等图形变换 ├── 7-OpenGL基础实战第三步:牢牢掌握特效渲染中的色彩空间/ │ ├── [ 19M] 7-1 光与五彩缤纷的颜色 │ ├── [ 27M] 7-2 各种各样的色彩空间 │ ├── [ 24M] 7-3 RGB与YUV格式是什么样 │ └── [ 25M] 7-4 RGB与YUV格式之间的相互转换 ├── 8-OpenGL基础实战第四步:如何提升性能及对渲染的精准控制/ │ ├── [ 18M] 8-1 提高Shader性能-VBO基础知识 │ ├── [ 49M] 8-2 _实战_使用VBO提高绘制三角形的效率 │ ├── [ 15M] 8-3 提高Shader性能-EBO基础知识 │ ├── [ 64M] 8-4 _实战_使用EBO提高绘制三角形的效率 │ ├── [ 11M] 8-5 提高Shader性能-VAO基础知识 │ ├── [ 35M] 8-6 _实战_使用VAO提高绘制模型的效率 │ ├── [ 45M] 8-7 代码优化 │ ├── [ 75M] 8-8 在Shader中使用条件判断 │ └── [ 24M] 8-9 在Shader中的使用循环与函数 ├── 9-OpenGL基础实战第五步:特效渲染中的坐标变换与投影/ │ ├── [ 22M] 9-1 我们不得不知道的视图变换 │ ├── [ 15M] 9-2 简单但很重要的正交投影 │ └── [ 32M] 9-3 投影变换的重中之重–透视投影 ├── 10-特效进阶实战一:如何基于纹理高效渲染出照片?/ │ ├── @更多it资源 www. │ ├── [ 27M] 10-1 高效渲染视频和照片-纹理基础知识 │ ├── [ 16M] 10-2 高效渲染视频和照片基础-绘制矩形模型 │ ├── [ 26M] 10-3 高效渲染视频和照片基础-设置纹理参数 │ ├── [ 68M] 10-4 实战-高质量渲染图片之图片导入与纹理参数的设置 │ ├── [ 20M] 10-5 实战-高质量渲染图片之顶点坐标与纹理坐标之间的对应关系 │ ├── [ 26M] 10-6 实战-高质量渲染图片之修改Shader程序 │ ├── [ 60M] 10-7 实战-高质量渲染图片之向Shader送数据并渲染图片 │ ├── [ 15M] 10-8 理论-高质量渲染图片之防止图片拉伸方法一 │ ├── [ 61M] 10-9 实战-高质量渲染图片之防止图片被拉伸的方法一 │ ├── [ 17M] 10- 10 理论-高质量渲染图片之防止图片拉伸方法二 │ └── [ 72M] 10- 11 实战-高质量渲染图片之防止图片被拉伸方法二 ├── 11-特效进阶实战二:如何基于外部纹理高效的渲染视频?/ │ ├── [ 20M] 11-1 高效渲染视频-视频渲染的整体过程 │ ├── [ 33M] 11-2 高效渲染视频-Camera2的基础知识 │ ├── [ 59M] 11-3 实战-高效渲染视频之通过Camera2采集视频数据 │ ├── [ 14M] 11-4 (图片侵权)高效渲染视频-内部纹理与外部纹理的区别及使用 │ ├── [ 19M] 11-5 实战-高效渲染视频之创建外部纹理 │ ├── [ 15M] 11-6 理论-打通从Camera到OpenGL的生命之路 │ ├── [ 81M] 11-7 实战-打通Camera到OpenGL之间的生命之路 │ ├── [ 43M] 11-8 实战-获得Camera的最佳分辨率 │ ├── [ 52M] 11-9 实战-Shander使用外部纹理渲染视频帧 │ ├── [ 12M] 11- 10 原理-防止视频帧被拉伸 │ ├── [ 51M] 11- 11 实战-防止视频帧被拉伸(一) │ ├── [ 53M] 11- 12 实战-防止视频帧被拉伸(二) │ ├── [ 11M] 11- 13 实战-防止视频帧被拉伸(三) │ └── [ 38M] 11- 14 实战-正确渲染视频内容 ├── 12-特效进阶实战三:如何通过OpenGL实现多种经典特效/ │ ├── 【更多it资源 www.】 │ ├── [6.4M] 12-1 OpenGL实现多种特效 │ ├── [ 20M] 12-2 实战-OpenGL实现黑白特效 │ ├── [ 23M] 12-3 原理-通过kernel算子实现特效 │ ├── [ 27M] 12-4 实战-OpenGL实现blur特效-1 │ ├── [ 51M] 12-5 实战-OpenGL实现blur特效-2 │ ├── [ 17M] 12-6 实战-OpenGL实现blur特效-3 │ ├── [ 33M] 12-7 实战-通过多种kernel实现不同的特效 │ ├── [ 23M] 12-8 实战-使用OpenGL实现素描效果 │ ├── [ 15M] 12-9 先来了解一下什么是LUT │ ├── [ 19M] 12-10 使用3DLUT的基本步骤 │ ├── [ 10M] 12-11 实战-使用3DLUT对图像调色-算法 │ ├── [ 57M] 12-12 实战-使用3DLUT对图像调色-编写Shader程序 │ ├── [ 23M] 12-13 实战-使用3DLUT对图象调色-传递数据 │ └── [8.1M] 12-14 实战-使用3DLUT对图像调色-实现多种色彩风格 ├── 13-特效进阶实战四:如何基于OpenGL实现多种经典转场/ │ ├── [ 12M] 13-1 什么是转场特效 │ ├── [ 13M] 13-2 实现转场特效的原理 │ ├── [ 16M] 13-3 实战-OpenGL实现擦除转场特效-算法 │ ├── [ 62M] 13-4 实战-OpenGL实现擦除转场特效-拆分Shader程序 │ ├── [ 18M] 13-5 实战-OpenGL实现擦除转场特效-编写Shader代码 │ ├── [ 40M] 13-6 实战-OpenGL实现擦除转场特效-向Shader传递数据 │ ├── [ 26M] 13-7 实战-OpenGL实现擦除转场特效-调试 │ ├── [ 12M] 13-8 原理-OpenGL放大场特效的算法 │ ├── [ 26M] 13-9 实战-实现OpenGL放大转场特效 │ ├── [ 21M] 13- 10 原理-百叶窗转场特效算法 │ └── [ 35M] 13- 11 实战-OpenGL实现百叶窗转场特效 ├── 14-特效进阶实战五:如何基于AI实现各种美颜特效?/ │ ├── [ 25M] 14-1 AI的一些基本概念 │ ├── [ 14M] 14-2 介绍一些好用的人脸识别AI库 │ ├── [ 53M] 14-3 实现大眼特效-使用MLKit获得眼部位置 │ ├── [ 13M] 14-4 实现大眼特效-用Shader实现大眼特效的原理 │ ├── [ 59M] 14-5 实现大眼特效-编写Shader程序 │ ├── [ 50M] 14-6 实现大眼特效-向Shader传递数据-1 │ ├── [ 50M] 14-7 实现大眼特效-向Shader传递数据-2 │ ├── [ 27M] 14-8 实现大眼特效-调试并展示大眼特效 │ ├── [ 16M] 14-9 实现瘦脸特效-原理与算法 │ ├── [ 36M] 14- 10 实现瘦脸特效-编写Shader程序 │ ├── [ 61M] 14- 11 实现瘦脸特效-向Shader中传递数据 │ └── [ 13M] 14- 12 实现瘦脸特效-调试并展示效果 ├── 15-课程总结/ │ └── [ 12M] 15-1 OpenGL+AI课程总结






