笔者从事IT行业15年了,一直奋斗在一线编程,从普通程序员逐步成长到上市公司技术总监,目前在创业公司担任技术合伙人,主要负责公司整个项目团队的技术管理。在网上或者论坛上很多同学请教过我关于如何学习3D游戏编程,大部分人都是刚踏入游戏行业的,也有从2D程序转向3D程序的开发者。在这里我将自己的学习3D游戏开发的经验积累分享给读者。学习3D游戏开发我将其分为五个阶段:

  第一阶段是学习3D相关的基础知识,首先要学会一门编程语言,这个是必要条件,在游戏开发中使用的最多的是C++编程,3D引擎开发使用的图形库,一般都是OpenGL或者DirectX,其中OpenGL是可以跨平台使用的,其应用最广,DirectX是微软研发的主要是面向PC端的,图形库的主要功能是渲染,所以大家还需要掌握一门Shader的编程语言,主要是CG和HLSL,3D编程会涉及到很多向量运算和矩阵运算,在真正学习3D游戏开发之前需要将这些熟练掌握,为你以后技术的提升打好基础。将结构图展示给读者如下所示:

112430zjtnsl7gqtnkts7k.jpg
  第二阶段是学习3D游戏开发的基本流程,换句话说就是如果将一个3D模型渲染到屏幕上显示出来需要经过那几个步骤?这就是我们经常说的固定流水线和可编程流水线,其中固定流水线是最基本的,可编程流水线主要是将固定流水线中的一些运算放到了GPU中执行。固定流水线包含的知识点如下所示:

1124309tz8cuvvu8xqlxq9.jpg
  第三阶段就是要真正涉及到游戏编程开发了,我们在这里将其分解成多个知识点,开发者要将其分开掌握。需要掌握的知识点如下图所示:

112431m28555qbyu4z8b8y.jpg
  第四阶段告诉读者如何自己去封装一款弱小的引擎,笔者利用业余时间封装过几款3D游戏引擎,为此还写过一本专门介绍引擎封装的书,对于初级程序来说,掌握起来比较容易。书的名字是《手把手教你架构3D游戏引擎》。当然对于市面上比较流行的Unity3D引擎,UE4引擎,它们的知识点绝对不止这些,3D引擎的功能还是非常庞大的,引擎开发的投入也是需要一定的人力和财力。现将书中的主要的知识点给读者展示如下所示:

112431a3m4anf3m2sqa3qf.jpg
  第五阶段主要是学习图形学编程算法,这也是3D引擎的核心功能,其实做的事情就是把在CPU运行的程序转到了GPU中运行,也就是通常说的可编程流水线。引擎实现的主要是针对场景的后处理渲染,需要读者掌握的知识点如下所示:

112431z0tdrep4t48wt4zk.jpg
  最后笔者将自己独立实现的引擎效果图展示给读者,该海水仿真引擎对海水的模拟接近了CG效果。如下图所示:

  实时生成水中动态效果

112431vugogznjnuhj8hhu.jpg
  海水仿真的反射和折射效果

1124325236qd55gq2qo331.jpg
via:csdn

相关阅读:3D对战网络游戏C++框架:服务器端与客户端需求分析

锐亚教育

锐亚教育,游戏开发论坛|游戏制作人|游戏策划|游戏开发|独立游戏|游戏产业|游戏研发|游戏运营| unity|unity3d|unity3d官网|unity3d 教程|金融帝国3|8k8k8k|mcafee8.5i|游戏蛮牛|蛮牛 unity|蛮牛