一、书写背景:
做为井底之蛙的我,之前一直做的2D游戏开发,最近搞了一个3D项目发现自己原来还有这么多欠缺的地方。另外看到群里大家讨论的各种渲染流程,渲染shader的实现自己竟然不知道别人说的专业名词都不知道是啥。于是决定开始沉下心来把openGL好好学习一下。
一开始学习的时候没摸准门路各种找书看各种看完就忘记,而且一直都浪费时间在openGL 那些api的功能查询中,而且又时间一久很多api又忘记了。发现自己走了不少弯路。最后在github看到了一个openGL的好书(简介 - LearnOpenGL CN)。跟着学习一下子门路摸清了。
把这本书看了几遍发现看了虽然对一些概念有所了解但是发现还是知之深浅。于是决定跟着书一边学习一边将自己做游戏这么多年对游戏引擎的理解和对cocos 引擎代码阅读总结经验。写一个opengl的简易引擎,这个引擎主要目标是吸收总结学习到的opengl知识,并且写出来变成可视的效果。于是有了(GitHub - xzben/openGLStudy: 我的openGL学习)这个库。
目前已经实现了一些基本的渲染功能,包括了 纹理加载处理,灯光处理,shader 处理,摄像机,天空盒子等功能。后续随着学习的深入还会继续加强功能,并且优化代码设计提升性能。目前编码的第一目标是先完成要的渲染目的(所以有些设计并不是最优的后续等到全部渲染的功能都写好了再进行优化整理)。
本来想等全部写完整个渲染的所有周边功能再写总结文章的。但是发现这个过程可能会持续很长时间,担心时间长了写代码时发现的一些看文章会忽略的点和自己的一些心得会遗忘所以决定还是要定期的把一些内容记录下来。所以本系列文章会随着学习的深入经常会有所改变调整。
二、OpenGL大纲总结
可能用过3D 引擎的同学发现普遍存在几个常见的类,Camera、Model、Material、Texture,天空盒子、shader 就是 顶点着色器,片段着色器,几何着色器,可能看得深入点还会看到 渲染管线,framebuffer 等内容。作为刚入门的同学肯定会对这些东西只是知道有,知道能用来能做啥效果,但是背后的细节就不太清楚了。本系列文章将安装这些对象逐一分析。
2、Camera 和 矩阵变换
4、Mesh 物体的骨骼
5、Shader
6、Material
7、framebuffer (帧缓冲)
8、渲染管线
9、后期处理