使用QueryInterface方法的目的是什么?(Direct3D)

What is the purpose of using the QueryInterface method? (Direct3D)

本文关键字:Direct3D QueryInterface 方法 使用 是什么      更新时间:2023-10-16

我明白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();