
Windows游戏开发
基于DirectX 9.0的Windows游戏开发
独立游戏开发指南
这个作者很懒,什么都没留下…
展开
-
附录A 进阶游戏编程书籍总结与推荐
章节导读很多游戏编程书籍都有一个通病, 一本书写完,读者看完之后,不知道下一步该如何前进。这里的附录就是让大家看完这本书后,知道自己接下来可以学习什么,如何进一步提升自己。为学习思路不清晰不科学的读者们指明一条康庄大道。所谓师傅领进门,修行在个人。读完这本书,以后的游戏开发之梦, 就要靠接下来给大家推荐的这些书籍和源代码为精神寄托了。想想看,如果从翻开这本书的第一页的那一刻开始算起,我原创 2017-11-21 13:33:32 · 9297 阅读 · 0 评论 -
第26章 站在巨人肩膀上——游戏引擎技术导论
章节导读本章内容可以开阔大家的视野,让大家对游戏引擎有一个全新的认识。游戏引擎是指一些已编译好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件。这些系统为游戏设计者提供各种编写游戏所需的各种工具,其目的在于让游戏设计者能容易和快速地做出一款游戏作品,而不是从零开始写起,这样大大提高了开发的效率,节约了开发的时间和开发的成本。游戏引擎让我们站在巨人的肩膀上进行游戏的开发,原创 2017-11-20 13:09:54 · 2157 阅读 · 0 评论 -
第25章 造物主的降临——多游戏模型的载入
章节导读本章我们介绍的知识点是网格模型的优化以及克隆,再把之前讲解网格模型那章中讲到的X文件的载入方法封装到了一个类中。最后就可以用几行代码,来载入多个3D 模型到我们的游戏场景中了。25.1 网格模型的优化我们在第17 章讲过一次网格模型,如果大家还不熟练, 请移步到第17 章把之前的知识复习一下吧。本章我们将接触到网格模型的优化相关知识。无论是用手编(如果你真有这个原创 2017-11-17 17:14:08 · 1318 阅读 · 0 评论 -
第24章 让唯美的雪花飘扬——三维粒子系统的实现
章节导读本章我们将一起探讨三维游戏中粒子系统的方方面面, 首先对粒子系统的基本概念特性做一个全面的认知,然后依旧是把粒子系统封装在一个C++类中,模拟了三维游戏中唯美的雪花飞扬的景象, 让我们之前实现的综合三维游戏场景更加炫。大家应该记得,我们之前也用GDI 实现过雪花粒子系统,那个时候由于图形库GDI的限制,实现效果或多或少显得有些拙劣,本章我们在DirectX 的帮助下,专门用粒子原创 2017-11-17 14:32:55 · 1961 阅读 · 0 评论 -
第23章 向碧蓝的苍穹致敬——三维天空的构建
章节导读本章准备跟大家一起探讨一下三维天空的几种实现方式,然后在几种方式之中选择最常用的一种进行重点突破,用一个C++类把这种三维天空的实现方式封装起来。这样以后要使用三维天空来辅助绘制某个游戏场景的话, 准备好天空的纹理图,然后简单地敲几行代码, 调用一下这个天空类中我们亲手写出来的函数就可以搞定了。23.1 三维天空技术阐述游戏世界中的天空好像是无边无际的,其实我们都被骗了原创 2017-11-16 17:55:11 · 681 阅读 · 0 评论 -
第22章 钟灵毓秀的世界——三维地形的构建
章节导读想创造出极具真实感的三维游戏世界, 三维地形的模拟是必不可少的,也是至关重要的。三维地形模拟其实是一个很广阔的课题,它其实不仅仅局限于游戏开发领域,在三维仿真、虚拟现实等领域都涉及。说起三维地形模拟,似乎有那么一丝神秘,其实,只要了解其实现原理,这所谓的地形系统模拟也就是纸老虎一只。本章我们将揭开三维地形模拟的面纱,看看到底怎样利用一个C++类的书写,实现我们专属的三维地形系统原创 2017-11-15 17:32:43 · 660 阅读 · 0 评论 -
第21章 翱翔于三维空间——游戏摄像机的构建
章节导读本章我们以核心思想为突破口,从原理介绍到一个C++类的写法, 一步一步带领大家实现了一个第一人称三维摄像机的C++类。然后在这个摄像机类的帮助下,放出了一个几乎贯穿了我们之前学到的所有DirectX 相关知识的“三维场景漫游”示例程序,算是对我们之前学的固定功能流水线这套渲染体系的总结。这个“三维场景漫游”示例程序的代码量有一千行,包括Direct3D 初始化、Directlnpu原创 2017-11-13 17:33:55 · 634 阅读 · 0 评论 -
第20章 虚实结合的光影——模板技术
20.1 对模板技术中概念的理解想要学习模板技术,首先需要理解两个的概念,即模板缓存与模板测试。20.1.1 模板缓存先来了解一下什么是模板缓存。模板缓存( stencil buffer )是一个用于专门用于制作特效的离屏( off-screen )缓存。模板缓存的分辨率与之前讲过的后台缓存和深度缓存的分辨率完全相同,模板缓存的像素也和后台缓存、深度缓存中的像素相对应。正所谓人如其原创 2017-11-13 11:39:45 · 440 阅读 · 0 评论 -
第19章 横看成岭侧成峰——深度测试与Z缓存
章节导读在游戏三维场景中,想创造出唯美又具真实感的画面,常常需要绘制大量的物体。而这些物体之间通常都存在着遮挡的关系,离观察点较远的物体,会因为近处物体的遮挡而不可见,或者只有部分可见。在Direct3D 中,微软为我们提供了深度缓存(或称Z 缓存),配套着深度测试技术,来专门实现这种效果。下图是本篇文章配套程序的一个截图,可以发现,利用了深度测试,才能让战士与这个矩形墙面水乳交融,表达出这个原创 2017-11-10 15:10:04 · 473 阅读 · 0 评论 -
第18章 水乳交融的艺术——Alpha混合技术
18.1 初识Alpha 通道与混合技术大家应该都知道, Alpha 通道是计算机中存储一张图片的透明和半透明度信息的通道。它是一个8 位的灰度通道,用256 级灰度来记录图像中的透明度信息,定义透明、不透明和半透明区域,其中黑表示全透明,白表示不透明,灰表示半透明。混合的英文术语为Blending , 是计算机图形学中常用的一种技术,即混合像素。我们通常用已经光栅化的像素光栅化同一位置的原创 2017-11-09 19:57:44 · 1333 阅读 · 0 评论 -
第17章 他山之石可攻玉——三维游戏模型的载入
17.1 网格模型技术的前生今世网格模型是一种将物体模型的顶点数据、纹理、材质等信息存储在一个外部文件中的3D 物体模型。对于那些简单的图元描述的图形,比如点、线、三角形等等,我们可以通过写代码指定顶点数据、索引数据、法线向量、纹理和材质等信息。但对于复杂的3D 物体的话, 采用这种方式显然是不现实的。因此,Direct3D 提供了一种称作网格模型的技术,可以从各种特定的文件格式中读取和绘制3原创 2017-11-08 19:56:26 · 907 阅读 · 0 评论 -
第16章 起舞不落幕——与纹理映射的华丽邂逅
16.1 纹理映射的概念江山如此多娇,风景如画,万物都有其独特的特点。真实世界中的物体, 在计算机三维世界中如果单单用各种各样的几何体以及顶点坐标,顶点颜色来模拟的话,往往缺乏生机,往往差强人意。比如说我们要绘制出如下效果的一个贴了瓷砖的立方体:综合我们之前讲过的知识,绘制一个立方体是小菜一碟。但关键就来了,如何给制出像砖块那样坑坑洼洼的效果呢?难不成用成千上万的顶点坐标一原创 2017-11-07 14:56:17 · 644 阅读 · 0 评论 -
第15章 做游戏的主人——输出控制利器Directlnput
15.1 引言众所周知,在普通的Windows 程序中, 用户通过键盘或者鼠标输入的消息并不是应用程序直接处理的,而是通过Windows 的消息机制转发给Windows 操作系统的。Windows 操作系统对这些消息进行响应后,再通过回调应用程序的窗口过程函数进行相应的消息处理。这显然满足不了对于性能要求比较苛刻的游戏程序。在DirectX 中,微软为我们提供了名为Directlnput原创 2017-11-01 14:48:49 · 3856 阅读 · 1 评论 -
第14章 绘制出质感的世界——光照与材质
14.1 引言光乃万物之源。我们无法想象,这个美丽怕人的世界,如果没有光的陪伴,会是怎样的一副满目苍夷。计算机3D 世界作为现实世界的高度逼真的模仿,必然也少不了光照的陪伴。回到我们的Direct3D应用程序中来,在Direct3D 中运用光照,能有效地增强3D 场景的真实感。在3D 场景中使用光照其实非常简单,我们不需要为物体的每个顶点都指定颜色值,只要告诉Direct3D 我们使用的是原创 2017-10-26 17:03:58 · 626 阅读 · 0 评论 -
第13章 迈向三维世界——Direct3D 的四大变换
本章我们将介绍使用Direct3D 创建三维游戏的基础,四大变换的概念和使用的方方面面。所谓四大变换,其实是作者结合自己的经验,总结出来的对世界变换、取景变换、投影变换和视口变换的总称而已。13.1 四大变换的基本认知首先,我们来讲讲周边的概念。在Direct3D 中,如果我们未进行任何空间坐标变换而直接绘制图形的话,图形将始终处于应用程序窗口的中心位置,在默认情况下这个位置就会成原创 2017-10-25 17:42:07 · 1118 阅读 · 0 评论 -
第12章 腾飞前的助跑——Direct3D 绘制基础
12.1 顶点缓存的逆袭12.1.1 引言在计算机所描绘的3D 世界中,所有的物体模型(如树木,人物,山峦〉都是通过多边形网格来逼近表示的,这些多边形可以是三形,也可以是四边形。所以我们这样说,多边形网格是构成物体模型的基本单元。下面我们先来看一组图片:通过两幅图的对比我们可以明显地看到,这个可爱的萝莉模型其实是就是无数的三角形和四边形网格构成的。首先我们用这些网格勾勒原创 2017-10-23 18:21:33 · 669 阅读 · 0 评论 -
第11章 三维内功心法——Direct3D编程基础
11.1 典型Direct3D 程序流程分析我们其实不用把3D 编程想象得多么神秘,说白了, 3D 编程就像一只纸老虎。正所谓万剑归宗,首先介绍一下Direct3D 应用程序的一般框架思路。我们来看一张典型的Direct3D 程序框架图。从上面这幅框架图中我们可以发现, Direct3D 程序的基本结构是非常简单清晰的,主要可以分为下面5 个部分:创建一个Windo原创 2017-10-20 15:16:34 · 1729 阅读 · 0 评论 -
第10章 快到碗里来——DirectX大局观认知
一说到要讲DirectX,估计又有朋友会说, 某某游戏引擎多好啊,直接去学游戏引擎不就得了, 干嘛学这图形API ( DirectX 或OpenGL )啊。我想真诚的告诉书本前的你, 如果你希望自己的游戏编程技术有所大成,请学好图形API 之后再去碰游戏引擎,学好图形API 以及计算机图形学相关知识了你可以自己去开发游戏引擎,过早接触游戏引擎只会让你在游戏开发之路上成为扶不起的阿斗。10.1原创 2017-10-16 13:25:27 · 1029 阅读 · 0 评论 -
第9章 梦的初现——开发回合制游戏《勇者斗恶龙》
这一章是对前面讲解的所有Windows 下游戏编程知识的一个总结和拔高,综合了Windows 基础编程,GDI 绘图基础,透明贴图,动画显示技术,输入消息处理以及粒子系统,是对前面八章内容的一个大综合。9.1 设计游戏登场角色游戏设计一开始,我们先设计出游戏中登场的人物。我们这个游戏故事中有3 个角色。分别是:英雄主角——圣殿骑士、大反派——黄金魔龙君和美丽的公主殿下;登场人物设计原创 2017-10-10 18:59:36 · 961 阅读 · 0 评论 -
第8章 玄妙的物理——物理建模与粒子系统初步
本章我们将介绍一些游戏编程中最基本的游戏物理建模技巧(匀速运动、加速运动、重力系统和摩擦力系统),以及一些最基本的物理模型(粒子系统)。8.1 基础物理建模初步我们可以毫不夸张的说,在当今的任意一款成功的3D 游戏中,物理建模都是非常核心的部分。而物理引擎也在最近这些年自立门户,成为了游戏引擎这个大概念中的一个分支。目前较为有名的物理引擎有PhysX 和Havok 等等,如下图所示。原创 2017-10-09 17:03:32 · 651 阅读 · 0 评论 -
第7章 做游戏的主人——Windows游戏输入消息处理
目前游戏开发中有两套输出消息的体系。一套就是我们本章要讲的Windows 消息处理,另一套就是在本书后面讲解DirectX时讲到的为游戏而生的Directlnput 消息处理API 。很多时候Directlnput 解决不了的问题,还得反过来找Windows消息处理帮忙呢。7.1 Windows 键盘消息处理首先我们对Windows 系统下键盘的基本概念及键盘消息的处理方式来一个简单的介绍原创 2017-10-09 10:01:59 · 690 阅读 · 0 评论 -
第6章 光与影的交汇——Windows游戏动画技术
在2D 游戏中,播放动画的方式一般有两种,第一种是直接播放影片文件(比如AVI、RMVB 等等影片格式〉,这常常用在游戏的开头动画、过场动画与结局动画中。另一种则是在游戏中利用连续贴图的方式,来达到动画显示的效果。其实,游戏程序本身几乎都是以无限循环的方式来不断地在游戏窗口中进行窗口画面重绘的操作,即使画面没有任何变化,这个重绘的操作依然在不断地进行,直到游戏程序结束运行为止。本章我们将介绍制原创 2017-09-30 14:23:23 · 732 阅读 · 0 评论 -
第5章 遮羞的艺术——Windows游戏绘图技巧
有人会说道,我们直接去用支持很多图片格式的GDI+加载有背景通道的png 图片就可以了啊,干嘛要学这个繁琐的GDI 透明贴图呢?这个问题问得好。这个问题的解答相信大家在读过上一章中对GDI+的描述后,都已经有了答案。对,是执行效率的问题。GDI+很好用,但是它是对GDI的再封装,执行效率完全达不到我们制作游戏的要求。现在这个时代我们用GDI 做游戏都嫌它慢了,更别说慢得一塌糊涂的GDI+了。原创 2017-09-30 10:00:15 · 715 阅读 · 1 评论 -
第4章 入门心法——Windows游戏图形基础(下)
4.6.6 示例程序GDldemo1在这个示例程序中,我们建立7 种系统提供的画笔以及画刷样式,用随机函数发生“ 二人组”srand()与rand()对各画笔与画刷的颜色值分量进行随机地初始化, 并将结果绘制在窗口中.好了,开始贴详细注释的程序源代码。程序代码片段一, 全局变量声明://-----------------------------------【全局变量声明部分原创 2017-09-29 14:39:18 · 850 阅读 · 0 评论 -
第4章 入门心法——Windows游戏图形基础(上)
4.1 Windows 图形设备接口(GDI)4.1.1 GDI 的初印象GDI 是Windows 操作系统的“ 三大长老” 之一。如果缺少它,Windows 操作系统不可能有如今这么美观漂亮的界面。GDI ,即图形设备接口,英文全称为Graphics Device Interface 或Graphical Device Interface,缩写为GDI 。GDI 是微软公司设原创 2017-09-28 11:01:17 · 794 阅读 · 1 评论 -
第3章 启程——Windows编程基础(下)
3.7 步步为营——窗口创建四步曲行云流水的窗口创建四步曲一一设计,注册,创建,显示与更新。创建一个完整的窗口, 一般都需要经过下面的四步曲:• 窗口类的设计• 窗口类的注册• 窗口的正式创建• 窗口的显示与更新3.7.1 窗口类的设计原创 2017-09-20 16:38:46 · 713 阅读 · 0 评论 -
第3章 启程——Windows编程基础(上)
3.1 高瞻远瞩——Windows 编程体系与游戏编程Windows 平台游戏编写铁三角——C++、 Windows API与图形库(DirectX或者OpenGL)。想要在Windows 下编写出绚丽的游戏程序,除了对某种图形库驾轻就熟之外,必要的Windows编程基础是不可少的。而在Visual Studio 中,如果采用C++编程语言来进行开发的话,我们需要知道通常有这3 种基本原创 2017-09-20 13:29:07 · 575 阅读 · 0 评论 -
第2章 开锋你的绝世名刃—— Visual Studio 开发环境的安装、配置
2.1 Visual Studio 、VC ++和C ++的那些事儿Visual Studio 是一套工具集, VC ( Visual c++)只是这套工具集中的一个工具,而c++大家都知道是一种风靡全球的编程语言。初次接触Windows 编程的朋友们经常会对这三者划不清界限。这三位有什么区别呢? VC++和C++是一个概念吗?其实作者刚开始学C++的时候也有这样的疑问,下面我们就来详原创 2017-09-19 14:37:40 · 1305 阅读 · 0 评论 -
第1章 高瞻远瞩一一游戏开发面面观
1.1 逐梦一一梦想让我们不孤单1.2 游戏产业的黎明 在1993 年的冬天,大名鼎鼎的Id 游戏公司发行了作为《德军司令部3D 》(最早的3 D 共享游戏软件之一,也是出自Id 公司之手)的续作《DOOM 》。在DOOM 热潮的冲击下,微软(Microsoft )公司才开始重新评价自己在游戏和游戏编程中的地位。这位巨人终于认识到娱乐产业的强大力量,而且这股力量,正在日益原创 2017-09-19 10:24:02 · 1720 阅读 · 0 评论