3d引擎开发需要那些技能储备[br]1. 图形API要掌握熟练至精通,从opengl 2.0到dx12,不但要玩过,最好积累过优化经验。[br]没用过各大厂的profiling工具就不叫精通。[br]然后各种数据结构的空间时间复杂度要了解。[br]场景管理要做好得靠这个硬功夫。[br]3. 计算机体系得学好啊,现在程序bound在cpu多,怎么把cache用好对性能提高差好多。[br]sse,mmx这些要能玩得转,不然math库咋写[br]对哦,还有arm的neon。[br]4. 计算机图形的知识要懂,懂多少不好说。[br]这就好比你要举起100公斤的杠铃得具备200公斤的爆发力,因为多余的100公斤力量要用在控制上。[br]引擎要写好,要具有扩展性,至少要具备深厚的graphics知识。[br]比如举个简单例子,如果不了解deferred shading和forward rendering的具体差别,咋让两者实现在一个引擎中呢[br]5. 编译知识要玩得转啊,还得自己搞个高级的shader语言封装低级shader[br]6. 各个平台的编译系统和基本库得知道,整套全平台的工程文件都折腾2个礼拜。[br]7. 数学要知道些,不过用到不多,四元数和矩阵会用会写就好啦[br]这个问题的权威回答还是得请 龚大大[br]1:了解显卡管线,在里面的各种小坑大坑巨坑掉一遍。[br]2:熟练掌握C++,在里面的各种小坑大坑巨坑掉一遍。[br]3:一些空间算法,比如空间划分,射线投射,相交检测等等。[br]Democratizing Visual Computing游戏引擎工程师 / game engine engineer 分工会很细,成熟的企业不会要求一个员工既做 graphics,又做 physics,又做 scene editor,又做 game play。[br]我认识一些 senior engine engineer 是不懂 graphics 的,也不需要懂 graphics,关键在于你的职业定位,你{ 希望 | 热衷于 | 有能力 } 解决哪方面的问题。[br]现在国内的趋势是用 Unity3D 或 cocos2d-x 进行开发,那么你可以参考这两个进行学习。[br]基于它们进行大量的游戏开发[br]思考它们的设计模式,比如 U3D 的 component 模型、surface shader,C2D 的场景-节点、"兼容"obj-c 的语法[br]为什么要实现这些功能[br]如果换做你能否实现[br]能否换种方式实现[br]基本上做到这一步就可以了[br]你也可以挖个坑自己实现一个引擎,或者在 C2D 中实现 deferred shading -。[br]-,对于找工作来说都是亮点。[br]找家靠谱的游戏公司进行实习也是个捷径,早点确定技术方向,少走弯路。[br]书籍的话推荐 milo 翻译的《游戏引擎架构》。[br]编程语言的话还是 C++ 为主,多关注下矩阵运算。[br]总之,知识点不要铺太大,找一个方向深入下去。[br]游戏开发/图形渲染/游戏引擎我已决定要厚着脸皮来回答这个问题。[br]答主今年3月硕士毕业,现就职于国内某游戏公司游戏引擎组,入职时没有引擎方面的知识和经验,承蒙引擎组BOSS不弃将我纳入帐中,跪谢![br]入职后,开始陆陆续续接触一些引擎方面的知识。[br]首先,引擎是一个包含了众多模块的一个集合。[br]不止是渲染,还有物理碰撞、UI、动画、AI、音效、脚本、场景、profile等。[br]可以这么说,能够掌握全部模块的通才应该是少之又少,(在我所认识的从事引擎工作的人里只有公司里负责带我的导师能够算得上是各方面都有涉及且具备一定研究深度的,毕竟在育碧做了好久的引擎)[br]在引擎组,周边也不乏有渲染、物理、UI、骨骼动画、AI等各路大神,但大多都是负责其中一个部分,并进行深入的研究。[br]其实从事这一行,无非就是多看书、看paper、看别人的代码,遇到什么问题就针对性地去解决。[br]在引擎开发的学习过程中,可参考一些开源的引擎。[br]如渲染方面,可以看看Ogre、Horde3D等,Ogre是我的导师极力推荐我看的,不止是它的渲染,从设计模式角度来说也是堪称经典。[br]Horde3D的渲染也是蛮不错的,我们目前有在考虑利用Horde3D来做一些渲染的工作。[br]物理引擎的话现在在看的是Bullet Physics,不过官方的文档比较少的,资料也比较残缺,好在有Havok的文档可作对照。[br]其他的部分我还没涉及,所以也比较难给出好的建议。[br]关于技能储备:[br]所说,渲染管线、C++以及一些算法都是必不可少的,答主不才,额外再补充几点。[br]1、理论基础:虽然我极力反对只理论不实践,但理论的基础还是必要的,如图形学、OpenGL、Shader都是需要好好学习的。[br]3、读懂代码:答主觉得最重要的还是读懂别人的代码,在这样一个站在巨人肩膀上看世界的时代,无数的开源引擎工作者利用数十年来的相关领域的研究成果搭建起来的引擎,对我们来说相当于是免费的午餐,如果能够掌握并为自己所用,想必已是大神。[br]我在努力中,你也加油![br]书可以给你一切,我的建议在这里[br],我又来导流量了,见笑。[br]引擎布道者建议从UE4源代码来看吧,学习一下,一个成熟引擎是怎么做的。[br]可能上手麻烦一些。[br]柔软的胖子向宇宙发射电波同作为小白,我尝试过写一个简单的游戏引擎,应该不能称之为游戏引擎,只是对学过知识的一次尝试运用。[br]《游戏引擎架构》这本书真的得看,不然都不知道引擎有哪些功能,这个就很尴尬了。[br]其次最好用游戏引擎做过小游戏,对游戏引擎感性上有认识。[br]有些开源的引擎还可以进去瞅瞅源码,思考为什么人家这么写,可以有哪些改进。[br]这些都从宏观上把握。[br]对于引擎的细节,又分好多。[br]大块的比如渲染,这个就要求图形学的知识,数学知识,熟悉底层的API。[br]场景管理需要多注意四岔树、八岔树等数据结构。[br]让引擎漂亮点还可以写导入模型,骨骼动画的东西。[br]物理系统比较难,自己视情况而定吧,并不是游戏引擎必备的部分。[br]集中到游戏引擎上,可以就使用STL的容器,方便。[br]如果这些都能弄漂亮,相信题主对游戏引擎会有一个更好的认识。[br]祝题主实践顺利[br]君子终日乾乾,夕惕若厉,无咎找到d3d的sdk,一个sample一个sample的看,看的差不多了的话 基本常用的图形学trick也能知道个差不多了。[br]如果你是想作为职业方向的话,最好的方式还是到业内来,比如我们公司(北京),哈哈哈哈。