开头都是废话,就不占太多位置了,今天开始正式学习Direct3D并且记录学习过程。说是学习Direct3D,其实是从C++开始学起,以前有过的那些C开发知识也许能帮到自己,也许会害了自己(让人不能踏踏实实的学),且拭目以待吧。
1.Direct3D的实现原理
Direct3D与显卡的交互通过一层叫做称为硬件抽象层(HAL,Hardware Abstraction Layer)的指令集,HAL由显卡制造商实现,由Direct3D调用。不同显卡实现的不同HAL表明了该显卡是否支持Direct3D中的某个功能,或者Direct3D的某个版本。故市场的显卡有所谓的支持DirectX9、支持DirectX10之说。
部分Direct3D功能如果HAL中没有实现(或者说显卡不支持),Direct3D将使用软件模拟的方式来实现。但是某些高级特性如果HAL中没有实现,程序在调用Direct3D时将会出错。因此一个稳健的程序需要在使用这些功能前检查一下设备是否支持。
2.C++知识
使用Direct3D进行开发时,创建的项目根据需要,应该在附加依赖项中加入Direct3D程序需要用到的d3dxof.lib、dxguid.lib、d3dx9d.lib、d3d9.lib等相关库。但是找的几本入门教程中貌似都没有提及这一点。也许他们认为所有去学习Direct3D开发的都已经是 C++ 的熟手,但是这是他们一厢情愿的想法。至少我就是个例外。
对 Widows 下 C++ 的程序入口是 WinMain 很理解。但是打开第一次示例程序,却为它使用 wWinMain 做程序入口而百思不解。Google 一下才找到让我满意的答案:如果字符集使用Unicode。那么程序的入口就是 wWinMain 了。看来基础不行就是一种悲哀。
3.数学知识
向量、左手坐标系、向量计算、向量矩阵....没脸没皮点,我自认为自己数学方面的悟性还是不错的。不过需要理解记忆的概念似乎还是多了点。等我全部弄熟了再去学习Direct3D,怕我自己又要犯耐性不好的毛病了。放一放吧,都说一颗红心两手准备,咱这次来个一个目的、三路并进。数学、C++、Direct3D一起学习。对了,还要算上每天写日记,神呀,可怜可怜我这将近170斤的胖子吧。