《Beginning DirectX11 Game Programming》读书笔记1 认识DirectX11
学习DX11开发,可以充分利用多核CPU、显卡GPU性能,同时简化了开发难度。目前大量软件应用已经在市面上存在,可以通过改进已有程序,增强竞争力。
结合自身的抽奖软件,要采用Direct2D针对win7改进性能,并新增3D版本。
基本概念
之前没有开发过DX程序,先认识一下基本概念。
第一个版本命名为Games SDK。
Windows、Xbox采用DirectX开发视频游戏。XBOX游戏使用的是DX9的特别修订版本。
DirectX很好的封装了对硬件的底层访问,而无需关心硬件驱动。下方DX指DirectX。更多见百度百科词条
DirectX10是革新版本,因它需要新的硬件,并且至少Vista系统环境。10已经成功了,受到了硬件厂商广泛支持,同时桌面系统也大量采用了win7。11基于10开发。win7系统自带,Vista可以安装支持,不支持XP。
DX11增加了GPU、多线程运算和拆嵌式细分曲面技术等重要特性。
DX11构成
- Direct2D 用于绘制高性能2D图形、位图、文本。替代DirectDraw
- DirectWrite 在Direct2D程序中负责字体渲染和文本布局
- DXGI 提供图形硬件底层管理。主要是枚举显示设备,将渲染好的帧呈现出来
- Direct3D 3D图形
- XAudio2 底层API,替代DirectSound,负责声音。XAudio只能在XBOX上应用
- XACT3 基于XAudio2
- XInput 输入控制。
- XNA Math 不是API,是数学库
- DirectCompute 11新增。实现多线程GPU运算。
- DirectSetup 用于分发程序。比如检查用户DX版本
- Windows Game Explorer 游戏浏览器。显示游戏信息,比如是否限制未成年人
- DirectInput 键盘、鼠标、操纵杆输入
Win7下的游戏浏览器,
渲染管线(共12项,后续会阐述)
如果之前编写了DirectX游戏,如何升级到11版本呢?
假如原有基于10的话,可以方便升级,用11对应的API替换即可。
假如原有基于9版本,因为版本革新,建议重新编写界面渲染层代码。11不同9需要检测硬件对DX功能是否支持,因为所有硬件不支持的功能,会通过软件模拟。这个特性,大大方便了开发人员的工作。
开发工具
下载DX11 SDK
http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=6812
阅读例子程序和文档
很多例子运行很慢,不知道是否没有启用硬件加速的原因。
SDK包含了很多实用工具,
PIX调试工具:用于收集和分析3DAPI的调用和执行信息。也可以设置断点调试。
Cpas Viewer:显示硬件对DirectX11的支持程度
诊断工具:检查DX功能组件是否正确执行的工具
错误代码查看:运行DX程序收到的错误代码,可以通过此工具查看详细描述
控制面板:实用工具,用于检查、修改DX功能组件。比如:启用调试、更改调试等级、查看组件版本以及硬件支持信息等
跨平台声音创建工具:PC程序不需要。创建XACT3需要的音频文件。包含命令行和GUI版本
游戏定义文件编辑器:为游戏浏览器提供适应本地用户规范的游戏信息。比如发布日期、图标、是否限制未成年
如何学习
- 阅读文档、不断编写代码练习
- 参考SDK、MSDN手册
- 参与交流。比如博客、开发站点
本书网站,http://ultimategameprogramming.com/ 网站即将发布DirectX 2D 游戏开发书籍。期待。
http://www.gamedev.net/page/index.html 这里有很多游戏开发者
后续将学习如何编写第一个DX程序。基于 VC2010+Win7(32位旗舰版)开发环境。