您的位置:首页 > 编程语言

游戏编程之DirectX的修炼:三(DirectX的初始化:上)

2017-09-05 20:45 204 查看
       
 爱上DirectX的那段日子,是灰暗也是忧郁的,或许是因为爱的太过深沉,我看着在我身旁的小D,河风拂过,带着一丝丝的湿润,轻轻吹动了她的发梢。那抹轻柔的发梢,像是一缕青烟,那么地美丽而不真实。我紧张地吞了吞口水,说到:“小D,我。。。”,她转过头,对我温柔地笑了笑,然后轻轻地说:“怎么了?”。我内心很混乱,但是她是那样地美丽,因为美丽,我知道一切也许会来不及。于是,在那柔风拂过地河边,,我脑中一片空白。“DirectX,我喜欢你很久了,可是,你离我是那么地遥远,因为你是那么地美丽,我知道,也许我配不上你,在你身边地大家,都是那么优秀,我太平凡,可我也太喜欢你,所以,,,所以,能让我初始化你吗?”在风中,她微笑着,我听见那句轻轻的,嗯!


      好就这样,莫名奇妙的我们可以开始DirectX的初始化了。(好吧,以上都是开玩笑的)。初始化之前,我们还是先来了解一下DirectX吧。

     DirectX,(Direct eXtension,简称DX)是由微软公司创建的多媒体编程接口。由C++编程语言实现,遵循COM。被广泛使用于Microsoft
Windows、Microsoft XBOX、Microsoft XBOX 360和Microsoft XBOX ONE电子游戏开发,并且只能支持这些平台。最新版本为DirectX 12,创建在最新的Windows10。                                           -------------百度百科


       DirectX几乎提供了对所有设备的硬件控制。这是通过一种叫做COM(Commponent Object Model 组对象模型)以及微软公司和硬件供应商所编写的驱动程序集和相应库文件来实现的。微软公司提供了一套规则,函数,变量,数据结构等,硬件供应商在编写驱动程序时必须使用他们来和硬件对话。

                                                                 --------------Andre LaMothe

         以上是比较官方的理解了,如果简单点来说,DirectX就是API,它是由DirectGraphics,DirectInput,DirectShow,DirectPlay,,,,,等一系列组件组成,提供了一整套的多媒体接口方案,而且性能很高,为什么高?因为它可以绕过OS直接和我们的硬件打交道,为什么他可以和硬件直接打交道,这是因为他的爸爸微软很强势!我说的也许不准确,但是很简洁对吧。大家如果有需要详细了解的,请百度一下,还有一个不得不提一下的东西就是上面两段话都提到的COM!关于这个,我在图书馆看到一大摞砖头一样厚的书,然后标题居然是COM基础,我就有点被吓到了,所以说。我可以拍胸脯告诉你,我也很不了解COM,但是,我还是要把我知道的说出来对吧。

        所谓COM对象,他实际上是一个或者一套C++类,它实现了很多接口,这些接口是一些函数的指针,我们通过这些函数就可以执行我们的很多操作,比如后面我们需要用到一个IDirect3DDevice9的接口,通过这个这个接口调用某些函数就能在屏幕上画东西。COM接口名字都喜欢在前面加上一个大写字母I,另外需要注意的就是,每当创建了一个COM接口后,在它的使命完成后请记得将它Release掉
记住不是delete,因为COM使用计数的方式记录被创建接口对象,当Release掉后计数就减一,直到计数为零,就在内部销毁他。大多数的COM对象都是.dll。好吧,就说这么多,大家有兴趣的可以去图书馆借书了解!


           讲真,上一节我们已经创建了一个窗口,其实我们已经可以基于那个窗口开始搞事情,比如我输出了一句话,但是我们可以gdi的函数在上面几何图形,或者是加载位图等等。但是,由于我们讲的的DirectX,所以,创建完一个窗口,万里长征算是走了第一步。而我们要使用的是DirectX来渲染我们的东西。由于Dire从X可以处理3D的东西,而不像gdi是处理2d平面。2d和3d有什么区别?区别在于3d多了一个维数,但是请不要低估了这一个维数,2d平面的东西可以说是基于像素点来处理,所涉及的计算量也比较小。但是,在处理3d的东西时,并不是简简单单的大家看到的一帧画面而已,在你看到这一帧画面中的的物体时,实际上时经过了许许多多的计算和变换才能让一切看起来那么真实的。所以,想要使用DirectX来渲染我们的游戏,我们需要做一些准备工作,这就是我们的主题:DirectX的初始化。

       
 上面我们说到过,要想使用DirectX来渲染我们的游戏,我们需要获得IDirect3DDevice9这个非常重要的接口,而当我们获得这个接口后,就可以通过这个接口的一些函数来渲染我们的东西。简单来说,初始化有两个部分。


      一:获得设备接口IDirect3DDevice9

   
 二:使用该接口进行渲染

ok,为了方便大家理解,还是要放上一张图片 ,来让大家理解,稍稍有些心理准备。



        是不是很熟悉,是的,没错,实际上就是在原来的窗口基础上,增加了能使用DirectX来处理我们的能力。好了下一节我们在讨论详细的代码。这一节就到这里吧。虽然东西不多,不过让大家能在看到代码之前大概知道我们要做什么,不至于一下只投入到细枝末节中,是我的目标。总之我希望读到的人能够看的明白一下。轻松一些,就是我的想法啦!

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐