偶然发现了本很棒的游戏编程入门书 - 《Windows游戏编程大师技巧》。说是大师技巧,其实还是很深入浅出的。
它涵盖了Windows图形编程的方方面面,从Win32的Helloworld程序,到GDI简介,再到DirectX的API。很适合我
这种Windows编程的菜鸟,所以很喜欢这本书的内容。
觉得这本书好的另一个原因是:虽然内容丰富,但没有涉及Windows编程比较繁琐的地方,基本就是Win32加DirectX。
这对于不想深入学习COM、MFC等等Windows平台上众多繁杂的技术的人来说很适合。尤其是刚学完C语言,需要一些
练手的小项目。Windows下的C编程与Linux下相比,比较有趣,图形化看起来也比较有成就感。
历史一瞥
早期的PC机落后于家用游戏机,最强大的游戏机统治了游戏市场。
DOOM的出现和成功证明了一点:只要足够聪明,人们可以使PC机做任何事。
在DOOM热的冲击下,微软开始重新评价自己在游戏编程上的地位,它意识到娱乐产业的巨大。
但Win95实时处理视频音频的能力很差,于是微软制作了一个叫Win-G的软件,但失败了。
事实上,它不过是一堆用于画位图的图形调用而已。
随后DirectX诞生了,最初的两个版本有太多糟糕的缺陷,微软低估了视频游戏编程的复杂性。
直到DirectX 5.0发布,人们才从DOS上转到Windows上进行开发。
设计游戏
3D数学很难,但策划和设计一个有趣的游戏可谓同样困难、重要。
想出一个游戏点子并不特别难,关键是细节、最终实现和视觉效果。
游戏的构成
编写MS Word程序虽然难,但是编写Unreal游戏则要比编写我所知道的其他任何程序都要难。
大多数情况下,游戏循环是一个含有大量状态的有限状态自动机
常规游戏编程指导规范
视频游戏是超高性能的计算机程序。不能在对运行时间或内存要求特别严格的代码段中使用高层API。
特别是与游戏内循环有关的代码大都需要手工编写。除此之外,还应留意下列技巧。
技巧1 全局变量代替参数传递
不要怕使用全局变量,许多视频游戏不让对时间要求严格的函数使用参数,而用全局变量来传递参数。
     void Plot(int x, int y, int color){// plot a pixel on the screenvideo_buffer[x + y*MEMORY_PITCH] = color;}
由于参数要被压栈、出栈,执行这个函数体的时间小于调用函数的时间。所以可以设立一些全局变量,
在调用前赋值以传递参数。
     
     int gx, gy, gz, gcolor;     // define some globalsvoid Plot_G(void){// plot a pixel using globalsvideo_buffer[gx + gy*MEMORY_PITCH] = gcolor;}
技巧2 内联函数
使用内联函数inline指示编译器用函数体代码去替换函数调用。这样做会使编译后的程序变大,
但却有效地提高了运行速度。
     inline void Plot_I(int x, int y, int color){// plot a pixel on the screenvideo_buffer[x + y*MEMORY_PITCH] = color;}
技巧3 尽量用32位变量
奔腾处理器是全32位架构的,较小的变量会降低寻址速度。
     struct CPOINT{short x, yunsigned char c;}
     这个结构没有注意字节对齐,一共5字节。
     struct CPOINT{int x, y;int c;}
     一共12字节。浪费了许多内存,但换来了速度的提升。
技巧4 使用二进制移位运算
     int y_pos = 10;// multiply y_pos by 64y_pos = (y_pos << 6);     // 2^6 = 64// divide y_pos by 8y_pos = (y_pos >> 3);
技巧5 设计算法
设计高效率的算法,没有任何一种汇编语言能使复杂度为O(n²)的算法运行的更快。
开发环境配置
1.安装DirectX运行时。
2. 安装DirectX SDK包。
3. 新建Win32工程,将SDK目录下的Lib文件夹中的库函数和Include文件夹中的头文件导入到工程中。
4. 开始开发!具体编译链接过程如下图所示。

《Windows游戏编程大师技巧》一、学海无涯相关推荐

  1. 开始利用CSDN做学习笔记,从windows 游戏编程大师技巧和3D游戏编程大师开始

    利用两个月的空余时间将windows 游戏编程大师技巧和3D游戏编程大师技巧看了一遍. 第一遍读的并不深入,代码也没有仔细研究.特别是3D下册,基本只是草草浏览了一遍而已.这一遍是为了对整体有个印象和 ...

  2. 《Windows游戏编程大师技巧》(第二版)第1章(上)

    第1章 学海无涯 "Oh, you want some too?!?" -Hudson, Aliens Windows 编程就像是一场由来已久并还在进行着的战争.尽管游戏程序员曾经 ...

  3. 《Windows游戏编程大师技巧》(第二版)第2章

    因此几乎是一夜间,Windows 95就改变了整个计算机行业.的确,目前还有一些公司仍然在使用Windows 3.1(你能相信吗?),但是Windows 95使得基于Intel的PC成为除游戏之外的所 ...

  4. Windows游戏编程大师技巧(一)

    第一章 无尽之旅 Windows编程是一场由来已久并还在进行着的战争.开始时,游戏程序拒绝Windows平 台,但正如Borg所言:"反对无效......",我也赞同这一观点.本章 ...

  5. 《Windows游戏编程大师技巧》(第二版)第11章

    第三部分:核心游戏编程   第11章 算法.数据结构.内存管理和多线程   第12章 人工智能   第13章 游戏物理   第14章 文字时代   第15章 综合运用:编写游戏! 第11章 算法.数据 ...

  6. 《Windows游戏编程大师技巧》三、Windows高级编程

    Windows编程很绝的地方在于:你不用了解太多细节,就可以完成很多工作. 使用资源 资源就是你的程序代码结合在一起的多块数据,可以被程序本身在运行时加载. 资源应当也放在程序的.EXE文件中的原因是 ...

  7. 《Windows游戏编程大师技巧》(第二版)第1章(下)

    实例:FreakOut 在沉溺于所讨论的有关Windows.DirectX 和3D 图形之前,应当暂停一下,先给你看一个完整的游戏--虽然简单了一点,但毫无疑问是一个完整的游戏.你会看到一个实际的游戏 ...

  8. Windows游戏编程大师技巧第二版学习笔记之第一章 实验补充

    前面记录的一下看书中的重点,编程还是要动手,下面就来动手试试,这里选择VC6.0编译器 这里先来配置游戏编程环境,原书中的dx81sdk_full.exe一共是1百多MB,其实没必要整那么多,看我在我 ...

  9. 《windows游戏编程大师技巧》第五章:DirectX基础知识和令人生畏的COM

    1.DirectX组件 DirectX是基于COM实现的,比系统自带的GDI和MCI更快.更稳定,其包括许多组件,如: ●DirectDraw(DirectX 8.0以上的版本不包含) ●Direct ...

  10. Windows游戏编程大师技巧之三角形填充

    一.三角形的种类 三角形一般可以分为如下的四种类型(这四种类型是对于计算机来说的,不是数学意义上的分类): 平顶三角形:就是在计算机中显示的上面两个顶点的Y坐标相同. 平底三角形:就是在计算机中显示的 ...

最新文章

  1. 机器人操作学习系列分享:模仿学习
  2. 挑灯熬夜看《Build 2015 Keynote》图文笔记
  3. 开机f8修复电脑步骤_电脑维修实战,修复电脑开机的各种报错提示,看了不后悔...
  4. 天水师范学院计算机科学与技术专业代码,计算机科学与技术-天水师范学院IPv6专题网站.doc...
  5. 自学python有哪些网站-python有哪些学习网站
  6. arduino 土壤温湿度传感器_智慧农业温室大棚环境监测传感器
  7. network 拦截不到东西是怎么做到的?_都说读中职院校学不到东西,中职学生到底是怎么学习的?...
  8. 摄像头拍摄后对图片进行图像处理-python(空域增强)
  9. java学习是什么_学习JAVA有什么作用?
  10. svn: E155004 is already locked 解决方案
  11. 线性模型第3讲:Lasso方法
  12. 将ArcMap中的符号样式导出的供ArcPad使用
  13. mysql嵌套查询是从外向内执行的吗_MySQL嵌套查询
  14. 西门子plc语句表是c语言吗,分享精心整理的西门子PLC指令表
  15. 金蝶K3 webservice接口
  16. 影视观影神器:ZY Player for Mac使用教程
  17. linux autorun.sh,linux autorun使用详解
  18. win10语音助手服务器,深入了解“小娜”Win10语音助手详解
  19. armbian开启ssh_armbian笔记
  20. 学生信息表(本地存储)

热门文章

  1. 三、瞰景Smart3D Master主界面
  2. 掘金小册8折优惠:掌握这些技术,轻松拿offer
  3. 解决华硕FX80G* Fn+F5或其他功能键切换不显示问题
  4. Redis数据库入门基础知识
  5. Platform SDK and SB2
  6. 第6课:scratch3的作品如何转换成exe文件
  7. mac maven安装与配置镜像
  8. 怎么修改服务器ipmi地址,设置linux服务器ipmi地址
  9. 利用PLTS将校准用的“trace”一分为二 操作指南
  10. 《Python黑帽子:黑客与渗透测试编程之道》的学习笔记