何时在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 支持的最佳实践?

使用 DirectX 11 后重置窗口

DirectX11第一篇 DirectX11简介

DirectX 12和DirectX 11选哪个,有什么区别

巫师3directx11是啥

Directx 11 前缓冲器