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

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

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

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

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

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

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

实时生成水中动态效果

海水仿真的反射和折射效果

学习3D游戏开发进阶之路相关推荐

  1. Unity 3D游戏开发学习教程

    用C#用Unity3D制作游戏 你会学到: 您将学习3D游戏开发基础知识,以使用Unity3D引擎推进事物. 到本课程结束时,他们将可以轻松制作任何类型的游戏,无论是3D还是2D MP4 |视频:h2 ...

  2. 【Unity 3D 学习】 《Unity 3D 游戏开发》(第二版 宣雨凇著) 书中一些名字注解

    前言 在学习<Unity 3D 游戏开发>这本书的过程中碰到了一些术语,比如序列化.反序列化.反射等,这些基本都是常见的程序员行话,但是感觉自己对这些术语总是一知半解,为了让自己更清楚地知 ...

  3. 1.15 从0开始学习Unity游戏开发--游戏UI

    上一章中,我们剩下最后一个任务,需要支持鼠标控制准心来进行设计,那么准心本质上就是一个始终呈现在屏幕上的一个图片,你当然可以用一个3D物体来制作,之前讲解渲染概念的时候也提到过,我们的屏幕就是相机的近 ...

  4. HTML5游戏开发进阶指南(亚马逊5星畅销书,教你用HTML5和JavaScript构建游戏!)

    HTML5游戏开发进阶指南(亚马逊5星畅销书,教你用HTML5和JavaScript构建游戏!) [印]香卡(Shankar,A.R.) 著 谢光磊 译 ISBN 978-7-121-21226-0 ...

  5. 3D游戏开发套件指南(入门篇)

    今天将介绍最新的3D游戏开发套件.不论是使用2D还是3D游戏开发套件,都可以在不编写任何代码的情况下,通过设置与拖放便能快捷的实现游戏创意. 指南简介 本指南将引导开发者设置一个空的场景,使用3D游戏 ...

  6. 《Android 3D游戏开发技术宝典——OpenGL ES 2.0》——2.4节文件I/O

    本节书摘来自异步社区<Android 3D游戏开发技术宝典--OpenGL ES 2.0>一书中的第2章,第2.4节文件I/O,作者 吴亚峰,更多章节内容可以访问云栖社区"异步社 ...

  7. DirectX 12 3D 游戏开发与实战第五章内容

    渲染流水线 学习目标: 了解用于在2D图像中表现出场景立体感和空间深度感等真实效果的关键因素 探索如何用Direct3D表示3D对象 学习如何建立虚拟摄像机 理解渲染流水线,根据给定的3D场景的几何描 ...

  8. Unity3D ——强大的跨平台3D游戏开发工具教程

    http://unity3d.9ria.com/?p=22 众所周知,Unity3D是一个能够实现轻松创作的多平台的游戏开发工具,是一个全面整合的专业游戏引擎.在现有的版本中,其强大的游戏制作功能已经 ...

  9. 3D渲染技术分享:3D游戏开发渲染调试高级技巧

    零.本文主要知识点 友情劝退:全文7400+字 如果知识点里没有你想要的,那可以直接拉到底,与评论区大神一战. 最初的计划是想写一篇关于KylinsGraphicsDebugger实现原理的文章,但感 ...

最新文章

  1. c语言case的应用,switch、case的使用
  2. videojs暂停时显示大按钮_紧急!西安老人扶梯上仰面向后晕倒,这个救命按钮很多人不知道...
  3. android listview item按钮,android-listview适配器中的按钮
  4. 转载-jmeter进阶功能
  5. 小伯利恒之歌(音乐)-Oh Little Town of Bethlehem(Virtual Tour)一次真实的旅行,看看耶稣的家乡...
  6. php 未定义偏移,错误php未定义的偏移:2-3-4等
  7. 地图poi数据库下载
  8. c语言gga字符串校验和代码,NEMA-0183(GPGGA,GPRMC,GPGSA,GPGSV,GPVTG)详解,并附解析代码(C语言版)...
  9. 显卡煲机测试软件,不用再煲机!这款耳机可自动调音给你提供定制化音频
  10. 计算机为动态分区无法安装系统,采用gpt分区无法安装系统怎么办
  11. 虚拟机VMware安装windows7 64位操作系统(图文版详解版)
  12. Linux capability详解
  13. 通达信交易服务器修改,GitHub - sjj6love/TdxTradeServer: TongDaXin Tarde Server 通达信交易服务器...
  14. 分享一个网页截图html代码
  15. 你在找mp3音频格式转换器有哪些吗?分享3个实用的软件
  16. STM32单片机通过ESP8266WiFi模块与Android APP实现数据传输(二)---上位机搭建
  17. php 游戏开发swoole,《基于 Swoole 的对战游戏实践》开课啦
  18. matlab 215卷积码,基于matlab的卷积码的分析与应用
  19. 什么是作用域、作用域链
  20. 关闭word/ppt后自动创建并打开新的文档

热门文章

  1. 此项目与visual studio的当前版本不兼容_忘掉GOPATH,迎接Go modules,进入Go项目依赖库版本管理新时代...
  2. 220v正反转电机接线法_电压为220/380V电动机如何接线,380V电机如何转接成220V详解...
  3. 用python绘制好看的图形_如何使用Python绘制好word cloud,怎么,画出,好看,的,词,云图...
  4. datatable如何生成级联数据_通过源码分析Mybatis是如何返回数据库生成的自增主键值?...
  5. Laravel-Action 对代码的改造
  6. 20165310java_blog_week6
  7. 用矩阵来运算向量与点的平移
  8. 100+经典Java面试题及答案解析
  9. 构建之法第二章读后感
  10. iOS使用UIScrollView实现左右滑动UITableView和UICollectionView