dx为什么用com

news/2025/10/7 23:15:58/文章来源:https://www.cnblogs.com/hshy/p/19129013

dx为什么用com

1. DirectX 的历史背景

  • DirectX 是 90 年代微软为 Windows 游戏/多媒体开发出的 API。

  • 当时 Windows 上最通用的组件化技术就是 COM(Component Object Model)

  • DirectX 各子系统(D3D、DirectSound、DirectInput 等)都需要:

    • 统一接口规范

    • 二进制兼容性(应用程序不需要重新编译即可使用新版本的 DLL)

    • 跨语言调用(VB、C++、Delphi 都能用)

👉 COM 正好满足这些需求。


2. COM 的几个特点

  • 接口基于虚函数表(vtable),类似 C++ 的纯虚类 (struct IUnknown { virtual HRESULT QueryInterface(...)=0; ... })。

  • 引用计数(AddRef / Release) 统一管理对象生命周期,避免资源泄漏。

  • 接口可扩展:旧程序不需要改动就能加载新 DLL(只要接口兼容)。

  • 二进制标准化:调用规则固定,可以跨编译器、跨语言使用。


3. 为什么 DirectX 用 COM?

(1) 模块化和可扩展

DirectX 需要很多子系统,显卡驱动、声音驱动、输入设备厂商都要写插件式的实现。
👉 COM 的接口模型使 驱动厂商实现接口,应用层直接调用,不需要关心底层实现。

(2) 版本兼容

游戏对性能和兼容性要求极高。

  • 用 COM,接口一旦发布,二进制就固定了;

  • DirectX 可以在新版本里扩展接口,而不会破坏旧游戏。

(3) 跨语言调用

早期很多 Windows 应用并不是 C++ 写的(VB、Delphi 占不少份额),COM 让它们也能调用 DirectX。

(4) 生命周期管理

显卡资源很宝贵(纹理、缓冲区、设备对象),需要精细控制释放时机。
👉 COM 的引用计数机制简化了这一点。


4. 为什么 DirectX 12 就不再强制用 COM?

  • DX12 是低层 API,更接近 Vulkan。

  • 仍然基于 COM 接口(IUnknown),但用得更“轻”:

    • 很多地方直接给你结构体和函数调用,不再层层封装。

    • 目的就是减少 COM 的开销,追求性能。


总结一句话
DirectX 用 COM,是因为当年需要 跨语言、二进制兼容、驱动厂商可扩展、统一生命周期管理
它是历史背景下的必然选择。后来 DX12 虽然简化,但依旧基于 COM 的核心模型。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/930951.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我的网站现在没有排名_我想问是不是花钱做百度推广就会有排名网站怎么加入百度网盟

一、前言 本人面试已经很久之前了,分享一下我做美团面试官的经历吧。 美团上海面试,2-1及以下美团是不社招的,校招和2-2~2-3社招一般是三面,格外优秀3-1及以上会加签面试。初面技术基础,二面业务感知和技术项目&#…

北京网站制作闪快网站备案手机号

每到周末的时候,我就感到压抑,无处可去,无事可做,我为什么那么在乎别人的看法呢?从不主动和人交流,话少的可怜,我一周说的话手指都能数出来,总是感到尴尬,不说话还常常苦闷别人不理…

图书馆网站建设工作阿里云企业网站搭建

很多人的电脑或者手机上都离不开一款好用的便签软件,使用便签软件可以帮助大家记事,提醒大家按时完成各项任务,但是自带的记事本便签软件不论从外观还是功能方面都有一定的欠缺,在使用过程中很容易耽误事情。 功能全面外观好看的…

建设网站的内容规划网络公司seo教程

Hello,今天事10月27日,距离刚开始写博客已经过去挺久了,我也不知道是什么让我坚持这么久,但是学校的课真的很多,很少有时间多出来再学习,有些科目马上要考试了,我还不知道我呢不能过哈哈哈&…

建立自己的平台网站吗php开发的大型网站有哪些

1、实验目的 通过本实验可以掌握: CLI的各种工作模式个CLI各种编辑命令“?” 和【Tab】键使用方法IOS基本命令网络设备访问限制查看设备的相关信息 2、实验拓扑 CLI的使用与IOS基本命令使用拓扑如下图所示。 3、实验步骤 (1)CLI模式的切…

CF2145 Educational Codeforces Round 183 (Rated for Div. 2) 游记

高罚时开出三题,掉分 $93$,心如止水。省流 高罚时开出三题,掉分 \(93\),心如止水。10.6 内含剧透,请vp后再来。 不是题解!!!!!!! 赛前 前一天 \(qwsxza\) 一把上分 \(136\) 极大的激励了我,今天在电脑前不…

江苏网站备案要求如何做网站的百科

大多数WordPress站点首页默认都是显示最新发布的文章列表,不过有些站点比较特殊,只想显示某一篇文章的全部内容,那么应该怎么设置呢? 其实,WordPress后台 >> 设置 >> 阅读 >> 在“您的主页显示”中…

如何做网站效果更好WordPress自定义古腾堡

搜索引擎推广是一种有效提升品牌影响力的推广策略。通过关键词优化、广告创意设计、定向投放和数据分析与优化等实践技巧,可以提高品牌的知名度、点击率和转化率。在实施引擎霸屏推广之前,还需对实践效果进行评估,以确保推广策略的有效性和适…

52个AI工具

52个AI工具1. 研究类专注于信息检索、深度分析与知识处理,为学术研究、商业调研提供高效支持。ChatGPT:OpenAI 推出的多模态模型,支持图文输入、文件解析与代码生成,可通过自定义指令优化输出风格,还能利用 Canva…

可观测专题【左扬精讲】——《Go 语言实现企业级 APM 监控系统实战:从 0 到 1 搭建高性能监控平台》

可观测专题【左扬精讲】——《Go 语言实现企业级 APM 监控系统实战:从 0 到 1 搭建高性能监控平台》

多区域多 VLAN 网络搭建与访问控制及服务器部署实验

前言 随着企业数字化转型加速与校园信息化建设深化,网络架构的复杂性与功能性需求持续提升。现代网络不仅需要实现终端设备的基础接入,更需满足多区域隔离、精细化访问控制、关键服务稳定部署及网络资源高效利用等核…

2025方钢、扁钢、圆钢、光轴、六角钢、异型钢、冷拉/冷拔方钢、冷拉/冷拔扁钢、冷拉/冷拔圆钢、冷拉/冷拔六角钢、冷拉/冷拔异型钢、热轧方钢/扁钢厂家权威推荐榜:坚固耐用与精准定制口碑之选

在建筑、机械制造、钢结构工程等领域,方钢作为关键结构材料,其质量直接关系到工程安全与使用寿命。随着市场需求日益多元化,采购方不仅关注材料的机械性能,更对厂家的定制能力、技术实力和售后服务提出更高要求。为…

Tina_Linux_系统软件 开发指南

1 概述 编写目的:本文档作为Allwinner Tina Linux系统平台开发指南,旨在帮助软件开发工程师、技术支持工程师快速上手,熟悉Tina Linux系统的开发及调试流程。 适用范围:Tina Linux v3.5及以上版本。 2 Tina系统资料…

实用指南:C++ 建造者模式:简单易懂的设计模式解析

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

网站做子页面怎么做的kompozer wordpress

【导读】EF Core 5.0伴随着.NET 5.0发布已有一段时日,本节我们来预估当大批量新增数据时,大概是多少区间我们应该考虑SQLBulkCopy而不是EF CoreSQLBulkCopy早出现于.NET Framework 2.0,将数据批量写入利用此类毫无疑问最佳,虽其来…

企业网站开发模板WordPress hitokoto

大语言模型的定义 大语言模型(英文:Large Language Model,缩写LLM),也称大型语言模型,是一种人工智能模型,旨在理解和生成人类语言。它们在大量的文本数据上进行训练,可以执行广泛的…

松岗做网站网站dns服务

方法中的参数,形参(形式参数)和实参(实际参数)简述 形参(形式参数):表示在定义的方法的时候书写的参数,形参规定了参数的个数、类型、顺序 形参相当于局部变量的声明&…

GO_基础2

控制语句条件语句if语句、if ... else 语句, if嵌套语句、if...else...if语句、循环语句简单for循环for作为无限循环for作为while循环for循环中的简单范围i和j是分配迭代值的变量。它们也称为迭代变量。第二个变量,即…

深入解析:基于Python学习《Head First设计模式》第五章 单件模式

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

深入解析:DHCP 动态主机配置协议(Dynamic host configuration protocol)逐层封装过程: DHCP --> UDP --> IP

深入解析:DHCP 动态主机配置协议(Dynamic host configuration protocol)逐层封装过程: DHCP --> UDP --> IPpre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; d…