gpt4 book ai didi

c++ - 向下类型转换 ID3D11Texture2D

转载 作者:行者123 更新时间:2023-11-30 04:01:53 25 4
gpt4 key购买 nike

根据文档http://msdn.microsoft.com/en-us/library/windows/desktop/ff476635(v=vs.85).aspx

ID3D11Texture2D 继承自 ID3D11Resource。

我尝试了以下但它给出了 std:non-rtti 异常。

ID3D11Texture2D *tex2d = dynamic_cast<ID3D11Texture2D*>(resource);

最佳答案

由于 ID3D11Texture2D 是一个 COM 接口(interface),您应该使用 QueryInterface 来获取该对象可能支持的其他接口(interface)。像这样:

HRESULT hr = resource->QueryInterface(IID_ID3D11Texture2D, (void **) &tex2d);
if (FAILED(hr)) {
// handle failure here.
}

请注意,如果 resource 指向的对象未实现 ID3D11Texture2D 接口(interface),即它不是 2D 纹理资源,这仍然会失败。

严格来说,您还应该使用 QueryInterfaceID3D11Texture2D 接口(interface)“向上转换”为 ID3D11Resource 接口(interface)。 COM 不要求如果一个对象实现派生接口(interface)它也实现基接口(interface)。然而向上转换应该适用于任何 Direct3D COM 接口(interface)。

关于c++ - 向下类型转换 ID3D11Texture2D,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25493929/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com