何时在directx11 中为STRUCTS 和类使用前缀“I”?
Posted
技术标签:
【中文标题】何时在directx11 中为STRUCTS 和类使用前缀“I”?【英文标题】:When to use prefix "I" for STRUCTS, classes in directx11? 【发布时间】:2016-07-14 02:33:54 【问题描述】:我很难理解何时为 directx11 STRUCTS 和 COM 对象类包含前缀“I”?
例如:
1) IDXGI 与 DXGI 2) ID3D11 与 D3D11
我似乎无法弄清楚何时使用什么,请帮忙。
【问题讨论】:
我为什么要投反对票?这里还有另一个非常相似(不准确)的问题:***.com/questions/37509559/… 他们没有得到反对票... 再次阅读提问的好方法***.com/help/how-to-ask I or not I 在类名中是一个纯粹的基于意见的决定,我的意思是接口,并且携带谓词它将是一个提供服务而不提供内部知识的复杂对象。具有基本成员的简单结构不是接口,仅此而已。 【参考方案1】:DirectX 接口使用组件对象模型 (COM)。
并非 COM 的所有方面都用于 DirectX,但它遵循使用“I”表示接口的约定,接口派生自IUnknown
,它通过QueryInterface
处理接口的引用计数和“强制转换”,以及接口旨在直接映射到 C++ 抽象虚拟类。
COM 的 DirectX 风格通常被非正式地称为“COM lite”。主要区别在于,当设备对象被销毁时,从设备创建的任何“子”对象的生命周期都立即无效。此外,“set”对象不会通过将它们绑定到渲染管道来增加它们的引用计数。
见The Component Object Model
您应该强烈考虑使用ComPtr 智能指针来处理 Direct3D 接口。它让生活变得更轻松。
顺便说一句,您可能需要花一些时间阅读 DirectX Tool Kit tutorials,它涵盖了 Direct3D 的大部分基础知识。
【讨论】:
以上是关于何时在directx11 中为STRUCTS 和类使用前缀“I”?的主要内容,如果未能解决你的问题,请参考以下文章
DirectX 应用程序中 Alt-Tab 支持的最佳实践?