D3D9 SDK文档笔记2---一切从头开始(1)

来源:互联网 发布:网络打假赚钱 编辑:程序博客网 时间:2024/05/18 02:10

   玩过Directx开发的人都知道,Directx是基于COM(组件对象模型)的。据本人理解,COM本质上就是在windows注册表里登记入户的一些接口---函数的集合,给每个COM一个身份证号(GUID)。这样通过在注册表中查找身份证号,每个应用程序都可以方便的调用这些接口。同时为了保证这些接口的通用性,以便各种不同的编程语言都可以方便调用,在编写COM时,就必须遵循一个公共的标准。而在一台机器上注册户口,整个分布式环境就可以使用,COM便通过网络成了DCOM。使用COM本身比较简单,初始化COM,获得接口,调用接口的函数,释放接口。

 在开发D3D的程序时,你可能感觉不到COM的存在,这正是MS着力打造的结果。D3D APICOM完全藏在了身后,你的开发过程和以前并没有任何差别。根据我的经验,初学者只会受到一些关于D3D 对象没有释放问题的困扰。这是由于COM采用的是引用计数的方法来创建和销毁COM接口的。也就是说,接口只创建一次,而在应用程序中各个地方的被引用而已。那什么时候释放这个接口呢?只有通过引用的计数了,当你所有引用接口的地方都已经,显式地调用了Release(),那么引用计数最终为0,这就真的到了接口被释放的时候了。所以碰到D3D对象没有释放的问题,那就一定是你的程序在引用完接口后,漏掉调用Release()了。

    终于啰嗦完COM了,其实学习3D开发最首要也是最让人初学者迷惑的问题是:那些三维画面到底是怎样,最后呈现在了我们的眼前。
原创粉丝点击