【我的OpenGL学习进阶之旅】【持续更新】关于学习OpenGL的一些资料
目录
- 一、相关书籍
- OpenGL 方面
- C方面
- NDK
- 线性代数
- 二、相关博客
- 2.0 一些比较官方的链接
- 2.1 OpenGL着色器语言相关
- 2.2 [【yfan】](https://segmentfault.com/u/yfan)博主相关的链接
- 2.3 [【湖广午王】](https://blog.csdn.net/junzia/category_9269184.html)博主相关的链接
- 2.4【[zhxmdefj](https://www.cnblogs.com/zhxmdefj/)】博主相关的链接
- 2.5 【[TwinklingStar](http://www.twinklingstar.cn/category/opengl/)】博主相关的链接
- 2.6【[妈妈说女孩子要自立自强](https://blog.csdn.net/candycat1992/category_2912027.html)】博主相关的链接
- 2.7 【[字节流动](https://blog.csdn.net/kennethdroid/category_9120765.html)】 博主相关的链接
- 2.7.1 基础篇
- 2.7.2 应用篇
- 2.8 【[蓬篙人](https://www.jianshu.com/u/f10b6a288780)】 博主相关的链接
- 2.9 其他
- 2.10 世界、视图和投影变换矩阵
- 三、Github
- 四、一些比较好的视频教程
- 五 、本人学习OpenGL的资料
PS: 加一个本人自己的专栏推荐:渲染技术:OpenGL ES、Filament
这个月在学习OpenGL方面的知识,这期间看过的一些书籍、一些博客、一些代码,在这里汇总一下。
原文地址为:【我的OpenGL学习进阶之旅】【持续更新】关于学习OpenGL的一些资料 (https://ouyangpeng.blog.csdn.net/article/details/120481319)
OpenGL ES(OpenGL for Embedded Systems) 是以手持和嵌入式设备为目标的高级3D图形应用程序编程接口(API)。
OpenGL ES是当今智能手机中占据统治地位的图像API,其作用范围已经扩展到桌面。
OpenGL ES支持的平台包括iOS,Android,BlackBerry、bada、Linux和Windows,它还是基于浏览器的3D图形Web标准WebGL的基础。
实际上,使用Android 4.3以上版本的设备和使用iOS 7的iPhone 5s已支持OpenGL ES 3.0。
Android 可通过开放图形库 (OpenGL®)(特别是 OpenGL ES API)来支持高性能 2D 和 3D 图形。OpenGL 是一种跨平台的图形 API,用于为 3D 图形处理硬件指定标准的软件接口。OpenGL ES 是 OpenGL 规范的一种形式,适用于嵌入式设备。Android 支持多版 OpenGL ES API:
* OpenGL ES 1.0 和 1.1 - 此 API 规范受 Android 1.0 及更高版本的支持。* OpenGL ES 2.0 - 此 API 规范受 Android 2.2(API 级别 8)及更高版本的支持。* OpenGL ES 3.0 - 此 API 规范受 Android 4.3(API 级别 18)及更高版本的支持。* OpenGL ES 3.1 - 此 API 规范受 Android 5.0(API 级别 21)及更高版本的支持。
- OpenGL ES 3.0向后兼容OpenGL ES 2.0,也就是说,为OpenGL ES 2.0编写的应用程序在OpenGL ES 3.0中可以继续使用。
一、相关书籍
OpenGL 方面
- 《OpenGL编程指南(原书第9版)》
- OpenGL ES 3.0 Programming Guide
【OpenGL ES 3.0 Programming Guide 对应的源代码】
对应的中文版本: 《OpenGL ES 3.0编程指南(原书第2版) 》
- 《OpenGL SuperBible》
《OpenGL超级宝典第七版》
- Unity Shader入门精要
本书不仅要教会读者如何使用 Unity Shader,更重要的是要帮助读者学习 Unity 中的一些渲染机制以及如何使用 Unity Shader 实现各种自定义的渲染效果,希望这本书可以为读者打开一扇新的大门,让读者离制作心目中杰出游戏的心愿更近一步。
本书的主要内容为:
第 1 章讲解了学习 Unity Shader 应该从哪里着手;
第 2 章讲解了现代 GPU 是如何实现整个渲染流水线的,这对理解 Shader 的工作原理有着非常重要的作用;
第 3 章讲解 Unity Shader 的实现原理和基本语法;
第 4 章学习 Shader 所需的数学知识,帮助读者克服学习 Unity Shader 时遇到的数学障碍;
第 5 章通过实现一个简单的顶点 / 片元着色器案例,讲解常用的辅助技巧等;
第 6 章学习如何在 Shader 中实现基本的光照模型;
第 7 章讲述了如何在 Unity Shader 中使用法线纹理、遮罩纹理等基础纹理;
第 8 章学习如何实现透明度测试和透明度混合等透明效果;
第 9 章讲解复杂的光照实现;
第 10 章讲解在 Unity Shader 中使用立方体纹理、渲染纹理和程序纹理等高级纹理;
第 11 章学习用 Shader 实现纹理动画、顶点动画等动态效果;
第 12 章讲解了屏幕后处理效果的屏幕特效;
第 13 章使用深度纹理和法线纹理实现更多屏幕特效;
第 14 章讲解非真实感渲染的算法,如卡通渲染、素描风格的渲染等;
第 15 章讲解噪声在游戏渲染中的应用;
第 16 章介绍了常见的优化技巧;
第 17 章介绍用表面着色器实现渲染;
第 18 章讲解基于物理渲染的技术;
第 19 章讲解在升级 Unity 5 时可能出现的问题,并给出解决方法;
第 20 章介绍许多非常有价值的学习资料,以帮助读者进行更深入的学习。
本书适合 Unity 初学者、游戏开发者、程序员,也可以作为大专院校相关专业师生的学习用书,以及培训学校的培训教材。
下载地址:(建议阅读原文直接下载)
链接: https://pan.baidu.com/s/1eTGEMem 密码: 2bpw
- 细说图形学渲染管线
https://positiveczp.github.io/%E7%BB%86%E8%AF%B4%E5%9B%BE%E5%BD%A2%E5%AD%A6%E6%B8%B2%E6%9F%93%E7%AE%A1%E7%BA%BF.pdf
C方面
- 《C Primer Plus (Sixth Edition) 》
对应的中文版 《C Primer Plus第6版》
《C Primer Plus第6版中文版》是一本经过仔细测试、精心设计的完整C语言教程,它涵盖了C语言编程中的核心内容。作为计算机科学的经典著作,讲解了包含结构化代码和自顶向下设计在内的程序设计原则。
作者把基础的编程概念与C语言的细节很好地融合在一起,并通过大量短小精悍的示例同时演示一两个概念,通过学以致用的方式鼓励读者掌握新的主题。每章末尾的复习题和编程练习题进一步强化了最重要的信息,有助于读者理解和消化那些难以理解的概念。
此书采用了友好、易于使用的编排方式,不仅适合打算认真学习C语言编程的学生阅读,也适合那些精通其他编程语言,但希望更好地掌握C语言这门核心语言的开发人员阅读。是学习C语言的必备书籍。
- 《C++Primer Plus (Sixth Edition) 》
对应的中文版《C++ Primer Plus第6版中文版》
《C++ Primer Plus第6版中文版》被誉为“开发人员学习C++的必备教程,没有之一”,可以说是一本面向从未学习过C语言甚至是从未学习过编程的人的入门书籍,它的首章从基础内容讲起,先介绍了传统编程的规则,后面才着重讲解有关面向对象——C++的精髓之一——的有关内容。
整个书的结构安排较为合理,难度爬升较慢。如果你是一个从未学过C语言(或者压根没学会C)的读者,那么,我相信这本书更适合你。当然如果有了C语言的基础,那学起来更是如虎添翼,效果更佳。
NDK
线性代数
《线性代数的几何意义》
二、相关博客
2.0 一些比较官方的链接
西川善司 3D图形技术 原文1-99回
GAMES101: 现代计算机图形学入门
【OGL dev】
【Learn OpenGL ES】
【Learn Opengl -CN】
【LearnOpenGL 源代码】
【LearnCpp】
【Android开发者-OpenGL ES 】
【An Introduction to Modern OpenGL Programming】
【OpenGL ORG】
【OpenGL Registry】
【OpenGL ES 2.0 API Quick Refrence Card】
【OpenGLES 与 EGL 基础概念】
【3D计算器】
【OpenGL API Documentation】
【OpenGL ES 2.0 API Reference Guide】
【OpenGL ES 3.0 API Reference Guide】
【OpenGL ES 3.1 API Reference Guide】
【OpenGL ES 3.2 API Reference Guide】
The OpenGLRendering Pipeline
The Graphics Pipeline and OpenGL
【OpenGL ES SDK for Android】
【OpenGL】
【opengl-tutorial】
2.1 OpenGL着色器语言相关
- 【Shadertoy - 国外着色器(Shader)源码分享网站】
- 【GLSL SANDBOX】
- 【OpenGL着色器(Shader)和GLSL语言的简单介绍】
- 【OpenGL Shading Language】
- 【GLSL 中文手册】
- 【OpenGL日常-着色器】
- 【GLSL 中文手册】
2.2 【yfan】博主相关的链接
- 【Android OpenGL ES - 开篇】
- 【Android OpenGL ES - 环境搭建与简单三角形的绘制】
- 【Android OpenGL ES - 坐标系】
- 【Android OpenGL ES - GLSL基础篇】
- 【Android OpenGL ES - 纹理】
- 【Android OpenGL ES - GLSL高级篇】
- 【Android OpenGL ES - 反相、曝光、对比度、饱和度、色调滤镜】
- 【Android OpenGL ES - 卷积矩阵】
- 【Android OpenGL ES - EGL源码解析以及C++实现】
- 【Android OpenGL ES - EGL C++实现】
- 【相机/图片滤镜应用-InstagramXFilter来了】
2.3 【湖广午王】博主相关的链接
- 【Android OpenGLES 系列专栏】
- 【Android OpenGLES2.0(一)——了解OpenGLES2.0】
- 【 Android OpenGLES2.0(二)——绘制一个三角形】
- 【Android OpenGLES2.0(三)——等腰直角三角形和彩色的三角形】
- 【Android OpenGLES2.0(四)——正方形和圆形】
- 【Android OpenGLES2.0(五)——绘制立方体】
- 【Android OpenGLES2.0(六)——构建圆锥、圆柱和球体】
- 【Android OpenGLES2.0(七)——着色器语言GLSL】
- 【Android OpenGLES2.0(八)——纹理贴图之显示图片】
- 【Android OpenGLES2.0(九)——利用OpenGL进行图片处理】
- 【Android OpenGLES2.0(十)——OpenGL中的平移、旋转、缩放】
- 【Android OpenGLES2.0(十一)——利用OpenGLES做Camera预览】
- 【Android OpenGLES2.0(十二)——FBO离屏渲染】
- 【Android OpenGLES2.0(十三)——流畅的播放逐帧动画】
- 【Android OpenGLES2.0(十四)——Obj格式3D模型加载】
- 【Android OpenGLES2.0(十五)——利用EGL后台处理图像】
- 【Android OpenGLES2.0(十六)——3D模型贴图及光照处理(obj+mtl)】
- 【Android OpenGLES2.0(十七)——球形天空盒VR效果实现】
- 【Android OpenGLES2.0(十八)——轻松搞定Blend颜色混合】
- 【Android Camera API/Camera2 API 相机预览及滤镜、贴纸等处理】
- 【GLSurfaceView的简单分析及巧妙借用】
- https://github.com/ssloy/tinyrenderer
- https://github.com/ssloy/tinyraytracer
- https://github.com/zauonlok/renderer
2.4【zhxmdefj】博主相关的链接
- 【OpenGL入门1.0:环境搭建】
- 【OpenGL入门1.1:窗口】
- 【OpenGL入门1.2:渲染管线简介,画三角形】
- 【OpenGL入门1.3:着色器 GLSL】
- 【OpenGL入门1.4:纹理/贴图Texture】
- 【OpenGL入门1.5:矩阵与变换】
- 【OpenGL入门1.6:坐标系统,3D箱子】
- 【OpenGL入门1.7:摄像机】
- 【OpenGL光照1:颜色和基础光照】
- 【OpenGL光照2:材质和光照贴图】
- 【OpenGL光照3:光源】
2.5 【TwinklingStar】博主相关的链接
- 【OpenGL原理介绍】
- 【OpenGL雾简介】
- 【模板缓冲区】
- 【GLSL与RenderMan、ISL、Cg、HLSL的对比】
- 【OpenGL着色器介绍】
- 【多重纹理和纹理组合器】
- 【累积缓冲区】
- 【像素相关的操作】
- 【顶点数组】
- 【显示列表】
2.6【妈妈说女孩子要自立自强】博主相关的链接
- 【ShaderToy】开篇
- 【ShaderToy】水彩画
- 【ShaderToy】基础篇之再谈抗锯齿(antialiasing,AA)
- 【ShaderToy】跳动的心❤️
- 【ShaderToy】基础篇之谈谈点、线的绘制
2.7 【字节流动】 博主相关的链接
2.7.1 基础篇
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)
2.7.2 应用篇
Android OpenGL ES 实现心动特效
Android OpenGL ES 实现瘦身大长腿效果
Android OpenGL ES 绘制贝塞尔曲线
Android OpenGL ES 实现瘦脸大眼效果
Android OpenGL ES 实现头部形变和头部晃动效果
Android OpenGL ES 实现实时音频的可视化
Android OpenGL ES 实现刮刮卡和手写板功能
Android OpenGL ES 实现 3D 阿凡达效果
Android OpenGL ES 实现动态(水波纹)涟漪效果
Android OpenGL ES 调试工具
Android 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 实现抖音传送带特效
2.8 【蓬篙人】 博主相关的链接
2.9 其他
【opengl各个坐标系理解与转换公式】
【OpenGL-坐标系】
【视觉OpenGL、OpenGLES、Metal】
【OPENGL ES 2.0 知识串讲(1)――OPENGL ES 2.0 概括】
【当一个 Android 开发玩抖音玩疯了之后(二)】,对应的代码 【xue5455/VideoAudioDemo】
Android OpenGL Camera 2.0 实现 30 种滤镜和抖音特效
Android FFmpeg 音视频开发教程
【专栏 - OpenGL ES 3.0实践】
【专栏-opengl】
【专栏-OpenGL ES 3.0实践】
【专栏- OpenGL学习脚印】
【OpenGL相关知识】
- 【Android 绘制透明视频 TransparentVideo】
- ANDROID IOS 播放透明视频 直播时炫酷的刷屏礼物的实现一种方式
Android OpenGL ES(八) - 简单实现绿幕抠图
opengl进行绿色屏幕抠图
Android OpenGLES Camera2绿幕抠图
【glumes的OpenGL学习专题】
2.10 世界、视图和投影变换矩阵
https://open.gl/transformations
Article - World, View and Projection Transformation Matrices
这次,彻底搞懂 OpenGL 矩阵转换
卡通渲染(上):致从没看懂过着色器代码的你
OpenGL学习脚印: 坐标变换过程(vertex transformation)
3D图形学中的矩阵变换(一)
3D图形学中的矩阵变换(二)
3D图形学中的矩阵变换(三)
三、Github
【OpenGL ES 3.0 Programming Guide 对应的源代码】
【Canber/OpenGL-ES-for-android】
【learnopengles/Learn-OpenGLES-Tutorials】
【LearnOpenGL-CN/LearnOpenGL-CN】
【湖广午王的 doggycoder/AndroidOpenGLDemo】
【markusfisch/ShaderEditor】
【wshxbqq/GLSL-Card】
【xue5455/VideoAudioDemo】
【stevensona/shader-toy】
【githubhaohao/NDK_OpenGLES_3_0】
【JYangkai/MediaDemo】
【andev009/AndroidShaderDemo】Android平台OpenGL SE Camera滤镜实现Demo
https://gitee.com/littlecorgi_twk/opengles-android
LearnOpenGL 源代码
CainCamera
LYFaceDetection
OpenGlCameraRender
四、一些比较好的视频教程
B站是个好网站,上面有很多免费的教程
- 最好的OpenGL教程之一
- [傅老師/OpenGL教學 第一章] OpenGL自製3D遊戲引擎 (已更畢)
- [傅老師/OpenGL教學 第二章][10/16晚間更新] OpenGL自製3D遊戲引擎
- [傅老師/OpenGL教學 第三章] [01/08晚間更新] OpenGL自製3D遊戲引擎(已更畢)
五 、本人学习OpenGL的资料
- 【本人的Native实现OpenGL的Demo】
- 【本人的Java实现《OpenGL ES 3.0 编程指南》书中使用 AndroidSdk API 编写的样板代码。】
- 【本人的OpenGL ES博客】
【我的OpenGL学习进阶之旅】【持续更新】关于学习OpenGL的一些资料相关推荐
- 【我的OpenGL学习进阶之旅】解决关于在OpenGL ES开发中GLSurfaceView调用了onPause和onResume方法,然后息屏亮屏之后GLSurfaceView黑屏的问题
目录 一.问题描述 二.分析问题 2.1 排查onPause和onResume方法 2.2 注释掉onPause和onResume方法 2.3 GLSurfaceView 关于Activity生命周期 ...
- 【我的OpenGL学习进阶之旅】介绍一下 绘制图元
目录 一.绘制图元 1.1 `glDrawArrays` 1.1.1 `glDrawArrays`API说明 1.1.2 `glDrawArrays`API示例 1.2 `glDrawElements ...
- 【我的OpenGL学习进阶之旅】C++如何加载TGA文件?
一.TGA文件相关介绍 通过前面的博客 [我的OpenGL学习进阶之旅]什么是TGA文件以及如何打开TGA文件? 地址:https://ouyangpeng.blog.csdn.net/article ...
- 【我的OpenGL学习进阶之旅】OpenGL ES 3.0新功能
目录 1.1 纹理 1.2 着色器 1.3 几何形状 1.4 缓冲区对象 1.5 帧缓冲区 OpenGL ES 2.0 开创了手持设备可编程着色器的时代,在驱动大量设备的游戏.应用程序和用户接口中获得 ...
- 【我的OpenGL学习进阶之旅】着色器和程序(上)------着色器
着色器和程序 一.前言 二.着色器和程序 2.1 创建和编译一个着色器 2.1.1 创建着色器 2.1.2 删除着色器 2.1.3 提供着色器源代码 2.1.4 编译色器 2.1.4 查询有关着色器对 ...
- Vue -- 指令【学习笔记】(持续更新)
Vue – 指令[学习笔记](持续更新) 记录了Vue第三天的学习笔记 v-show 注意,v-show 不支持 <template> 元素,也不支持 v-else. 带有 v-show ...
- CTF MISC在我眼里各种奇奇怪怪的题学习思路总结(持续更新)
系列文章目录 MISC:图片隐写简单题学习思路总结(持续更新) CTF Crypto简单题学习思路总结(持续更新) 文章目录 系列文章目录 前言 一.二维码 1.1 QR码 1.2 Maxicode码 ...
- CTF MISC图片隐写简单题学习思路总结(持续更新)
系列文章目录 第一篇文章: CTF Crypto简单题学习思路总结(持续更新) 文章目录 系列文章目录 前言 一.JPG类隐写 1.1 JPG文件末尾添加字符串 1.2 JPG文件中添加字符串 1.3 ...
- 问道区块链_区块链学习_v1.0.0_持续更新。。。
本系列内容参考图 创建 共识网络 调用 部署 挖矿 消耗 编写 超级链组件 节点 多节点 账号 智能合约 合约账号 燃料耗品代币 开发者 区块 尊重原创,转载请注明出处https://blog.csd ...
最新文章
- 编写高性能Java代码的最佳实践
- 简单介绍oracle重置序列的方法
- 我所理解cocos2d-x 3.6 lua --使用Cocos Studio
- 爬虫基础, 乱码问题, jupyter, urllib, requests, lxml, multiprocessing并发, session, beautifulsoup...
- 实战演示 Go 反射的使用方法和应用场景
- 高可用Eureka注册中心配置说明(双机部署)
- java 聚合函数_如何使用Java流计算两个聚合函数?
- WinForms C# :TabWebBrowser 多页面浏览器源码
- 【踩坑经历】一次Asp.NET小网站部署踩坑和解决经历
- [Robot Framework] 怎么写动态等待?
- 【C语言】——背包问题详解
- Java的三种技术架构是什么?
- 改造:Ueditor编辑器插入外链视频支持手机播放和上传本地音乐
- 2013,爱上暗色调
- 联想G40-70旧物改造小总结——替换固态硬盘电池光驱啥的
- 计算机配置单性价比高,钻研组装电脑高配置清单
- 如何批量将多个 PPT 文档按指定页分别拆分成多个文档
- 【EndNote小技巧 - 文档文献的导出 | 设定引文放置位置 | 文献引用设置超链接】
- oracle中修改用户密码
- 牛客oj---喆神装书
热门文章
- 【学习总结】VIO初始化学习1:Monocular Visual–Inertial State Estimation With Online Initialization and Camera–IMU
- 显示器的品牌型号和价格计算机,电脑显示器价格?选购电脑显示器注意什么?...
- 历史上的今天:苹果推出初代 iMac;谷歌收购摩托罗拉移动;Fuchsia 首次发布
- 获取多达 16GB 的 Dropbox 免费空间!
- 【资料分享】智能车比赛 - 硬件调教
- 计算机类论文摘要,★计算机应用类论文摘要范文计算机应用类论文摘要写
- python调用包的路径_Python3 模块、包调用路径详解
- 新概念二册 lesson 4 现在完成时
- dataTables国际化
- CISCN2022东北赛区复赛Writeup-MapleLeaves