摸爬滚打DirectX11_day03——关于COM接口对象的一些介绍

本文介绍了Windows平台上使用C++与COM接口配DirectX进行游戏开发的基本原理。重点讲述了COM(组件对象模型)的作用及其与DirectX的关系,解释了COM接口对象的概念、识别方法以及在C++中的使用区别。
摘要由CSDN通过智能技术生成

目前Windows平台下的开发,主要是以C++与COM接口配DirectX为主要方案。


COM(Component Object Model,组件对象模型)是一项能够使DirectX独立于编程语言并向下兼容的技术。我们常称COM对象为接口,可将其视为一个C++的类来使用。在以C++语言和COM接口方式开发的DirectX应用程序中,可以直接访问COM接口和对象。

COM接口对象说白了就是一组具有特定功能的抽象集合(COM接口其实就是定义了一组可供调用的函数)。应用程序无法直接访问COM接口对象,必须通过COM接口对象的接口的指针来执行COM接口对象的功能。

COM接口对象的接口是包含了函数指针数组的内存结构,其中每一个数组元素就是可以实现某一个功能的某一个组件的函数地址。类似于C++中的函数指针。

关于如何识别COM接口对象
COM接口对象一般都具有前缀大写字母“I”。例如管理X文件的COM接口叫做ID3DXFile。

关于与C++中指针的使用区别。
COM接口对象的接口没有new和delete这一套。COM接口对象有一个引用计数器,它通过控制对某对象的引用次数来决定其生命周期的(类似于C++中的智能指针)。

当创建一个COM接口对象时,对应接口的引用计数自动加一,当程序对对象引用结束的话,调用对象的Release方法将此接口的引用计数减一,如果引用计数不为0,那么这个COM接口对象在系统中占用的内存并没有被释放。只有当引用计数为0时,COM接口对象占用的内存才会被真正的释放。对于我们来说,只要每次在对象引用结束的时候,调用Release改变接口的引用计数即可,而不需要我们去释放COM对象在系统中占用的内存。

这里写图片描述

这里写图片描述

关于COM接口在DirectX中的知识了解这些就足够了。

如果想要深入了解COM接口对象,可以参阅《COM技术内幕》。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值