再ps. 如果你对渲染部分比较感兴趣的话,可以再推荐一些资料
OpenGL/DirectX资料很多,经典的红宝书蓝宝书龙书什么的
Ray Tracing from Ground Up, Physically Based Rendering: From Theory to Implementation 教你写渲染
其他的包括OptiX框架、Mitsuba
闲来无事偶尔看到这篇主题,然后看到了Chaos的回答,立马火冒三丈。在知乎我几乎不回贴,偶尔浏览,不过这次实在忍不住要骂人。这么脑残的回答,还有一把人支持,我只能说国内科研风气之差,可见一斑。目测Chaos可能是个大神偶像级人物,后来有人告诉我他是网易端游手游的引擎的开发者,然而,那又如何?我瞬间想起最近火遍朋友圈的恒大许家印带领高管队以一分的优势赢了员工队的笑话。
本人不才,搞图形图像十多年,早期从OGRE入门,一直用OGRE开发项目,后来偶尔用过U3d, 现在常用UE。各种3d渲染几乎都自己从头实现过一遍,例如延迟渲染,SSAO,各种光照,反射,水面,体积光,软阴影,阴影边缘柔化……现在主要从事VR方面的开发,应该对这个话题还是有点发言权的。不开启嘴炮模式,先说一下Chaos的回答有多么的不靠谱。
1、强烈推荐UE。这里,我不否认UE是一个优秀的引擎,但是,不要说刚入门的题主,就算是做图形学三年左右的人,99%都不会能看懂UE。很简单,UE的结构庞大,设计复杂,绝对不是一句轻描淡写的“如果你看不明白,如果你有弄不懂的,有想不通的,慢慢来。”就能解决的。90%以上的3d程序员的天赋,穷一生也不会能看懂UE的源码。当然了,你也可以说我危言耸听,看不起程序员。估计你在高大上的网易待惯了,不会知道这个行业千千万万的图形程序员可能是连个简单的shader都不会写的接口程序员。其次,UE那些复杂的宏定义嵌套,真的是好吗?真的那么容易看懂吗?UE的源码很多是生成源码,很多程序员估计连生成源码都不知道是怎么回事,生成源码有什么好处也不知道,你真的觉得UE适合入门学3d吗?可能对你而言是适合的,但是你这个回答完全是误人子弟。
2、”Ogre是个失败的作品,是一堆半专业队业余从事的零散产品,架构混乱,要改成成品需要花很大的力气。“对于这句话,我只认同最后一句,需要改成产品需要花很大的力气。前面的,我完全不敢苟同。先说产品,不知道国内高大上的网易,出过哪一款碾压火炬之光的产品了吗?还是网易自信到可以碾压火炬之光的团队了,但是生不逢时,所以出不来好产品?对了,列举产品还要看看年代,你总不好意思拿现在的产品来碾压十年前的产品是不是?我孤陋寡闻,真不知道网易除了半桶水的天下系列,还有什么很牛逼的体现出来牛逼引擎的3d游戏。再说代码质量,开源的引擎我看过很多,鬼火是入门级的超级简单的引擎,OSG是还不错的引擎,不过不大适合游戏。龚敏敏的作品代码质量还是可以的,不过人力有限,功能较少。由于我本人用OGRE最多,当然是更喜欢OGRE的架构和代码。以我二十年的代码经历,喷别人的代码,从来都是一件不需要负责任,很容易装逼,很简单的事。说句老实话,我也吐槽过OGRE的一些bug,一些不爽的设计,但是真正轮到自己上,真的就牛逼哄哄,别人都是垃圾了?看看OGRE开发团队人员的资历,看看OSG团队开发人员的资历。OSG团队有一个是国内的王锐,清华毕业,图形搞了多少年,红宝书的译者,你真的觉得这些人都是业余的,代码是架构混乱的?不客气的说一句,国内开发3d引擎的,做图形学的程序员,不算新入门的,90%以上的人写不出OGRE这类引擎质量的代码。这样的代码在你眼里是如此的差劲?现在github这么方便,talk is cheap,show me your code。
3、吐槽别人的东西总是容易的,但是吐槽的时候,请言之有物,而不是一句“垃圾”,“差劲”,“三流”,这样其实跟泼妇骂街没什么区别。我看过很多吐槽OGRE的,平心而论,OGRE就是个渲染架构,很多功能做得也不完善,这是事实。但是,作为一款学习引擎,图形学的3d引擎,绰绰有余。麻烦你下次吐槽的时候言之有物行不?收起你的不必要的傲气,或许你是大神,或许你有过不错的作品,但是从你的回答以及那么多的点赞,我只看到了乌烟瘴气。拜托,要喷请来点实际的,好吗?
废话不多说,上个干货:GitHub - Microsoft/DirectX-Graphics-Samples: This repo contains the DirectX Graphics samples that demonstrate how to build graphics intensive applications on Windows.
里面有个MiniEngine,才54M,当然只有渲染的部分。
作为入门参考应该还不错,还能学DX12多好。