使用QueryInterface方法的目的是什么?(Direct3D)
What is the purpose of using the QueryInterface method? (Direct3D)
我明白QueryInterface方法实际上是做什么的——它只返回一个指向特定接口的指针。但我的问题是,我为什么要用这种方法?
我的意思是,
和 QueryInterface(__uuidof(IDXGIResource), (void**)&Resource)
和
IDXGIResource * Resource
这些不是差不多吗?如果是这样,我为什么还要使用这个方法呢?出于什么原因我应该使用它?
COM假设单个对象将提供多个接口,即接口将是细粒度的,并且您将希望一次使用多个接口。QueryInterface
是如何获得指向对象上的其他接口的指针。
QueryInterface
是从现有接口调用的,第二个没有给指针赋任何值(它是一个未初始化的指针)。一个实际的例子将两者结合起来:
IDXGIResource * Resource = NULL;
pInterface->QueryInterface(__uuidof(IDXGIResource), (void **)&Resource);
在你尝试使用指针之前,你应该确保QueryInterface
调用成功。
if (SUCCEEDED(pInterface->QueryInterface(__uuidof(IDXGIResource), (void **)&Resource))
Resource->DoSomething();
相关文章:
- Direct3D 11 - HLSL - 获取顶点索引 ID
- 在 Direct3D 12 的描述符范围内设置多个描述符
- 使用 c++/WinRT Direct3D UWP Game DR 模板 Direct X11 的错误消息
- 什么是 Direct3D 12.0 上的"Map Default Buffer"?
- Direct3D和DXGI之间的区别
- tiny_obj_loader到 Direct3D 顶点缓冲区和索引缓冲区数组
- Direct3D typedef usage
- 如何在Direct3d 10中进行纹理混合
- Direct3d 11深度模板 / Alpha混合问题
- 使用CMAKE查找Direct3d 12
- 来自代码采样器的Direct3D(DirectX 9.0)代码示例
- Direct3D:尝试绘制一个三角形,但什么也没显示
- 是否覆盖Direct3D接口
- 将世界、视图和投影矩阵传递到 Direct3D 中的着色器
- 为什么当我尝试重写指向 Direct3D 设备的"EndScene"函数的指针时没有任何反应?
- 什么时候应该调整Direct3D 11后缓冲区的大小,以防止在调整大小时拉伸
- Direct3D 中的 Windows Phone 8 触摸位置
- 通过Winsock发送Direct3D顶点信息
- Direct3D旋转矩阵来自矢量,反之亦然
- Nsight or other Direct3D debbuger/performance analyser for V