写在最前面,回顾一下我与OpenGL的缘分。
2020年4月是我第一次接触OpenGL,那个时候我是在一次偶然的机会接触到了我硕士老板的项目,不过那个项目使用的还是固定管线(当时我对这个没有概念),但是对于我这个土木出身,长期混迹于2维CAD的小白来说已经相当震撼了,但在此时我并没有深入。
2021年3月,时隔一年,我来到了择业的十字路口,我在思考我的职业方向,作为传统工科出身,本专业处于下行,由于我个人写C++两年,有一点野心想转码,在考察了人才市场诸多岗位之后,深感写C++比不过科班(可能简历都过不了),但偶然的机会,我看到一则图形开发的招聘广告,我想通过增加业务逻辑来弥补自己非科班出身的短板,这使我想起了我在一年前接触的OpenGL项目。说干就干,我花了一周时间把这套OpenGL代码的逻辑理清(大多靠百度,自己并不会写),也是在这个过程中我了解到可编程管线,并第一次接触到一个网站learnopengl。这也是我学习图形的开始。
可以说OpenGL是我在图形路上的第一个老师,在学习过程中,我是从纯小白到绘制出自己的第一个贴图立方体,度过了相当艰难的一段时间。因为我对图形学基本一无所知,可编程管线上来就提供了大量的概念。期间,我查阅了图书馆很多图形学的书籍,但都因为没人指导,做了很多无用功(技术资料很老,名为图形学但非渲染方向,更多的是硬件层的算法(画点,画线,CRT....))。这也是我现在撰写博客的原因:希望有和我一样的小白少走弯路,尽快找到适合自己的方向。
我大概是学习OpenGL2个月后,就开始了自己第一次实习面试,说实话我的感觉并不好,但是感谢命运给了我机会:
1.公司给了我二面机会,大概15天之后;
2.我在牛客网认识了一个大兄弟,可以说是我人生中的贵人。
我当初加这个大兄弟是因为我看到他发的帖子说自己在找图形的工作,于是我想请教一下,然后他给我推荐了Games101(你可以看出我的基础有多差,图形界鼎鼎大名的课程我居然都不知道)。因为这个课,我终于找到了一个可以学习现代图形学的地方,这对于我一个外行人来说是多么的幸运,所以我要衷心的感谢这个大兄弟。
为了能顺利通过二面,Games101,我采取了近乎疯狂的学习模式,7天看完了所有课程(没做作业),但是我感觉自己啥也没记住。然后我到知乎找到了Games101的笔记专栏,5天时间自己手抄,理解,尽自己最大的可能记住了我所能记住的东西。我也不知道我为什么要在公司提供的仅15天二面时间里梭哈Games101,因为牛客上大家分项的面试经历都是:公司的二面不谈技术,只谈个人。而我却对个人魅力迷之自信,但唯独对于技术深感惭愧,所以放开来学技术,却没考虑包装自己。
也许冥冥之中,自有天意。二面来到的时候,面试官上来或许是对我一面的不满意,居然直接开问技术,但是他问的很多都是我刚从Games101中学到的东西。可以这么说吧,我只会纸上谈兵,我没做过任何作业,只学过理论,但我回答得头头是道。我自己都惊呆了,后来当天下午就获得了实习机会。
这里有很多巧合:
1.恰好我认识了一个大兄弟,他给我推荐了Games101;
2.恰好由于面试公司太忙,给了我15天的学习机会;
3.恰好我鬼使神差梭哈了Games101,而没关注一些花里胡哨的自我包装。
你可能会说:像我这样一个买冰红茶永远都不会中奖的人,可能在这里用光了自己多年积攒的运气。我不得不承认我很幸运,但同时,我想说你不知道我走了多远的路才将这份经历展现在你面前。
上边或许看起来很离题,我只有一个中心思想:如果你有一个目标,就要投入自己全部的精力,少去关注别人说什么,多去关注自己需要什么,只有保持终身学习的习惯,厚积薄发才能等到机会。
因为我现在回想起来,如果我没有梭哈Games,又或者我看了一遍没懂就不了了之不去做笔记,那当面试官问到我的时候,我心态可能立刻就炸了。所以,Make your time!
现在,我已经自学图形一年多了,对于DX有了自己一定的理解,最近准备看Games202,当闫老师提到需要使用OpenGL的时候,我突然回忆起了上述心路历程,分享在这里,希望可以帮到黑夜里摸黑前进的行人。所以我也要总结一些我写作业OpenGL专栏的目的:
1.为了深刻学习Games202,重温OpenGL语法(因为公司以DX为主,我已经很久没有看OpenGL的东西了)。
2.给自己做一份笔记,证明我来到过这个领域,并重新掌握这门技能;
3.向我那位没有见过面的大兄弟致敬,或许某一天,我会成为其他人口中的大兄弟。
共勉!
讲了这么多,回到本专栏,我们就是基于LearnOpenGL来学习,不过这个学习文档对原理都讲解得很详细了,如果你是一个初学者,我建议你立刻划走:
LearnOpenGL CN (learnopengl-cn.github.io)
上方的链接将是你打开图形学大门最好的钥匙(一周入门,只要你够狠)。
如果你理解了基本的图形学知识,那么我的博客将适合你,因为我会采取代码注释的方式,直接标记某行是干嘛的,并且把握能想到的对标DX的个人见解都注释清楚。
所以,如果准备好了,那就始吧。Make a flag and go after it!