【正式转战WebGL】以及终于下定决心好好学OpenGL了。 18

本文地址: http://blog.wysaid.org/886.html

前面写渣渣教程什么的(http://webgl-lesson.wysaid.org/),都是出于没有女朋友周末没事干或者说……对于这方面有一点点兴趣爱好吧。

于是非常非常业余地在断断续续地学,中途还中断过很长时间。其实我对这方面真的相当相当菜,这是我的真实想法。但是如果别人觉得我比较厉害的话,虽然嘴上说着(不要不要)不敢当,但是(身体还是很老实的嘛)心里还是很高兴,差点昏了头,细细一想,妈蛋要谦虚,不懂就是不懂,菜就要好好学呀! 正因为不懂,我也就只能做出一些看起来还不错,实际上我很清楚没什么技术含量的东西。

首先是书看得少,只看过红宝书和黄皮的shading language,红宝书的话,属于入门书,通篇在讲API,矩阵等基础,光看完以后应该可以用OpenGL画一个或者很多个很好看的茶壶。 黄皮书的话,也属于入门书,前十章都在讲shader语法,后面六章也都是几个较简单的demo。而我看过的关于OpenGL的书就这两本,看过的别人的代码也少得可怜,毕竟工作以后就跟这方面关系不怎么大了,就算跟GLSL图像后处理有关……也都还算简单。

于是……总算下狠心买了两本高深一点的书,充实一下理论基础……

再随便扯一下。

一直觉得自己C++学得挺好,而且工作用C或者C++的话,听起来就好像感觉高大上一样。尤其是多年前逛C语言,C++贴吧的时候,就能感觉到一些人对于自己使用编译型语言感觉到天然的优势,就是感觉比那些写脚本的牛逼,感觉自己比那些人强很多一样。

自己也深受荼毒,盲目觉得C++大法好, 编译保平安,人在做,天在看,解释执行留祸害。

后来嘛,随着学习的不断加深,倒不是觉得C++有什么不好,但是C++本身不提供GUI啊,像java,obj-c什么的自带一堆library,你看了就知道,哦,java可以用swing做GUI,obj-c更是一堆苹果集成的开发库。那C++就蛋疼了,必须找自己的定位了,因为……可以做的事情太多了,而我想学和做的就是图形(不是图像!不知道怎么就跑到图像上去了,也不是游戏……写个小游戏什么的只是顺便)方面的,如果是想做游戏方面的,显然纠结度要少很多,因为第三方lib那么多,比如cocos2dx就烂大街,刚好用C++开发,去学学挺不错的。unity3d的话,就要脱离C++大法了。

后来随着对OpenGL(后来变成GLES)学习的不断进步,以及不能光学理论啊,总得有demo展示啊……这样的心理,又觉得glut就是个渣渣,虽然学了很久的Windows SDK,也能直接用Windows API直接画GUI,但要被绑定windows的话,还不如一开始就学点direct3d一体成型算了。于是……相当作死地去研究了相当长时间的QT。QT强大,因为它不仅强,而且大,做出来的小demo带上链接库至少得有几十兆,发给任何人,别人都懒得看吧,还得足够相信你不会在里面插后门,以及一些该死的xx软件还说这是病毒,解释起来多麻烦。我这明明是个磁盘读写(加载纹理除外),网络功能都没有的小demo,妈蛋怎么可能是病毒。

于是,这才学起了窥望已久的WebGL……先自学了一点javascript的皮毛,把以前C++写好的代码里面稍微短一点的翻译成js实现的webgl版,挂到网站上,把链接发给别人看,多方便啊!再得几句点赞,心里就感觉,”哎,这玩意挺不错啊”之类的。于是就继续学下去了。

好吧无关的差不多就扯这么多。

之所以说正式转战,意思就是不会再以C++为蓝本去写了。

在此之前的所有js代码,在写之前我必定会用C++打个草稿,因为vs这个IDE对C++支持相当友好,再加上vax,简直……没有它们都写不下去。然而对js的支持却是一塌糊涂,因为js的类和变量并不像C++那样好分析,变量也没类型,在这一点上vs还没有单纯提示补全类似单词的sublime来得方便。

但是~ js不用编译啊!写完保存浏览器刷新一下,这调试代码的速度简直快到没朋友!跟用QT的时候比起来,比如代码稍微长一点,难免会遇到一些考虑不周的地方,修改一个地方,尤其是头文件,在vs里面按下f7,我艹艹艹, 从头到尾编译一次,一堆moc_*,文件多的时候等尼玛好几分钟,看得人都困了。

所以,我想……以后直接用js写的话……肯定快很多^_^

再顺便说下调试器……之前一直用的谷歌浏览器来调试,也用习惯了,相当方便。

但今天看到firefox调试器里面居然有专门针对WebGL的选项!直接把我感动了。(如果shader显示的时候能帮我换一下行就更好了)

直接上图:

 

firebug firebug2

 

好吧,差不多就说这么多。

决定好好学以后,肯定有个边学边实践的类似于学习笔记的东西,我会把它写成一个简单的库,现在起名为WGE,已经开始了一部分咯~ 参见:(http://wge.wysaid.org/