D3D游戏开发----浅淡COM组件技术

本文介绍了COM(组件对象模型)在Windows游戏开发中的重要性,特别是与DirectX的关系。通过一个简单的类组件示例,演示了如何从C++类到DLL的转换,以及如何通过抽象基类实现COM组件的接口调用,从而实现代码的隐藏和重用。文章强调了COM组件的接口概念和全局唯一标识符(GUID)在调用中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

利用面向对象编程语言开发出来的类组件,相当于过程化语言开发的一个模块,而面向对象用覆盖的方式取代了传统的对模块的直接修改,解决了很多开发中的问题。然而,面向对象的类的代码只能提供源代码级的重用,不能满足跨语言、跨平台的只用要求。例如,用c++开发的类模板无法被其他语言(Delphi,visual basic和powerBuider等)使用。

    一个跨语言使用的方案是,把类文件打包成动态链接库(DLL),这样其他的语言就可以调用二进制DLL中的函数。但是,这样简单打包有如下缺陷:一是必须随DLL一起把头文件提交给用户才能用DLL进行开发。二是DLL所封装得函数的修改通常会导致该DLL的客户程序重新编译。

    COM(Component Object Model,组件对象模型)是microsoft提出的组件标准,在windows平台上,一个COM通常也是一个DLL动态链接库文件。与常规的DLL类不同,实现COM组件的类需要从一个抽象基类中继承而来,从而拥有一个函数地址表。这样,COM组件的应用客户就可以通过请求的方式查用函数。

    实现组件抽象基类又称为接口,COM对于调用者来说,就只能看见接口。COM通过接口向外部提供服务。对于调用者来说,不需要了解组件内部的具体实现,只需要知道接口就可以了。

对于windows下游戏编程最为关系紧密的directx就是基于COM组件的技术的。有人说,要是对directx有一定了解,对于directx基本可以不专门去学。这里介绍COM为了更好的了解dircectx。

最后,通过一个简单的抽象基类的继承来重写c++类,是该c++类接近于COM组件的规范,以帮助了解COM组件的开发应用。

 

1        直接用c++类的函数:

下面的SimpleMath类有两个函数sum100,sum200,功能是简单的将三个数相加后返回。

新建一个目录:“F:\MathClass”,在内部新建连个文件:SimpleMath.h  SimpleMath.cpp。具体代码分别如下:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值