怎么学opengl(原创学好opengl走遍天下都不怕系列基础篇)
最近本来是想认真学习下《opengl es第三版》这本书,无奈内容过于生涩,有点看不下去,偶遇opengl-tutorial.org的翻译教程,感觉正符合我急于实践出真知的需求,便认真通读了一遍该教程的基础教程,共8个tutorials。
基础篇主要面对初学朋友(比如猪哥),快速了解教程内容,具体细节需要自己去手动操作一遍才能体会到教程中的文字。
- tutorial 1
首先,每个初学小白或者对c 开发环境不熟悉的朋友,都需要经历一个痛苦地搭建环境的过程。习惯用vscode(visual studio code, vs 的轻量级小弟)作为开发环境的我,经历了一脸懵逼的配置操作后,最终还是选择老老实实地按教程中cmake生成vs(visual studio)工程文件去调试,果然,cmake的配置还是很稳的,你只需要下载一个cmake-gui,直接按教程配置即可。
来自http://t.cn/RV5ZoBl
- tutorial 2
介绍着色器(Shader),顶点着色器、片段着色器。
从绘制一个三角形的角度,使用这两个着色器渲染三角形。
来自http://t.cn/Ea8t8kZ
- tutorial 3
真的是基础中的基础了,一定要认真理解好矩阵的变换在opengl坐标转换的作用,主要讲了平移矩阵(Translation Matrix)、缩放矩阵(Scale Matrix)、旋转矩阵(Rotation Matrix)。学过线性代数的朋友入门很快,手动算一遍!不会也要强迫自己记下来!
另一部分主要介绍了在不同的空间M(模型空间)->W(世界空间)->V(观察空间,摄像机空间)->P(投影空间)的转换。
模型空间->世界空间:遵循缩放->旋转->平移
世界空间->观察空间:设置观察角度
观察空间->投影空间:根据模型观察的距离来显示放大或缩小、远或近的效果
来自http://t.cn/Rb3cYYH
- tutorial 4
主要讲怎么给一个立方体上色,由于立方体的每个面都是由三角形划分(openGl只支持画三角形orz...),因此通过颜色缓存通过顶点着色器去传递颜色,让片段着色器去对不同顶点的颜色渲染。
PS:片段着色器的数据来源于顶点着色器传递,顶点着色器来源于颜色缓存。
最后讨论了怎么让绘制的三角形不受绘制顺序的影响(Z深度值),从而达到一个明确层级的效果。
>>>>
来自https://dwz.cn/Dp51TEI4
- tutorial 5
主要讲怎么给一个立方体贴上纹理(Texture),所谓纹理就是图片。根据UV坐标(除了正常坐标外,还需要这个坐标)把图片变形贴在表面上。
接着将怎么让纹理显示的边界毛刺弄得更加顺滑合理,主要介绍了线性过滤、各向异性过滤、Mipmaps三种方法。
最后讨论了压缩纹理,提高了处理纹理的效率!
来自http://sina.lt/fXCP
- tutorial 6
主要讲怎么处理键盘鼠标事件,并且利用不同的事件来控制显示不同角度的模型。
讲述了每一帧绘制时,位置应该怎么合理变化。
最后,因放大模型导致穿透到模型内部的问题,介绍了GPU检查摄像机与三角形前后位置关系的方法(反转法线)。
来自http://sina.lt/fXCN
tutorial 7
将怎么将hardcode(硬编码,写死的数据)的模型换成使用Blender工具导出模型。
来自http://sina.lt/fXCM
tutorial 8
介绍了光照对着色的影响,不同的光照和材质会有不一样的着色效果,用到了顶点法线(顶点所有面的法线均值)。
来自http://sina.lt/fXCK
QA- 访问不到网址怎么办?
可以访问相关的github仓库哦 >> http://sina.lt/fXCR
- 怎么学习opengl?
实践,耐心,有编程基础的可以入门快,没线性代数基础的可以补!
- 学习过程中有问题,怎么解决?
首先谷歌百度奉上,其次再有问题(思考过无法解决的问题),可以联系我941090791@qq.com!踩坑经验奉上!
看到这里不妨添加微信搜索公众号《虚幻技术美术》,或关注头条号的我~
虚幻技术美术,用心服务游戏
,
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com