根据文档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接口,因此应该使用该接口QueryInterface
来获取对象可能支持的其他接口。像这样:
HRESULT hr = resource->QueryInterface(IID_ID3D11Texture2D, (void **) &tex2d);
if (FAILED(hr)) {
// handle failure here.
}
注意,如果由指向的对象resource
未实现ID3D11Texture2D
接口,即它不是2D纹理资源,则仍然可能失败。
严格来说,您还应该使用QueryInterface
将ID3D11Texture2D
接口“向上转换”到ID3D11Resource
接口。COM不需要,如果对象实现派生的接口,则它也必须实现基本接口。但是,向上转换应与任何Direct3D COM接口一起使用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句