下铸ID3D11Texture2D

艾哈迈德·萨利赫(Ahmed Saleh)

根据文档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纹理资源,则仍然可能失败

严格来说,您还应该使用QueryInterfaceID3D11Texture2D接口“向上转换”ID3D11Resource接口。COM不需要,如果对象实现派生的接口,则它也必须实现基本接口。但是,向上转换应与任何Direct3D COM接口一起使用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

来自ID3D11Texture2D的HBitmap

来自分类Dev

检索要通过网络发送的ID3D11Texture2D数据

来自分类Dev

更改ID3D11Texture2D像素格式

来自分类Dev

检索要通过网络发送的ID3D11Texture2D数据

来自分类Dev

D3D11屏幕桌面复制到ID3D11Texture2D

来自分类Dev

从ID3D11Texture2D到ID2D1Bitmap,可以吗?

来自分类Dev

从Texture2D到Texture3D

来自分类Dev

为什么在D3D11下绘制D2D图?

来自分类Dev

使用libav *将原始帧(D3D11Texture2D)编码为rtsp流

来自分类Dev

DirectX11中Texture2D和Texture2DMS之间的区别

来自分类Dev

Direct3D 11 / HLSL Texture3D <float3>错误错误?

来自分类Dev

Direct3D 11 / HLSL Texture3D <float3>错误错误?

来自分类Dev

ID3D11ShaderResourceView的尺寸。

来自分类Dev

了解ID3D11Device和ID3D11DeviceContext

来自分类Dev

多态与下铸

来自分类Dev

DirectX11如何从未签名的char *数据创建Texture2D

来自分类Dev

directx11-无法将Texture2D设置为ShaderResourceView吗?

来自分类Dev

在DirectX 11 Compute Shader中加载Texture2D数据

来自分类Dev

Texture2D到base64-Unity3d Web Player

来自分类Dev

使Texture2D在运行时/脚本Unity3D中可读

来自分类Dev

Texture2D到base64-Unity3d Web Player

来自分类Dev

GL_TEXTURE_2D和GL_TEXTURE_RECTANGLE

来自分类Dev

无法创建暂存Texture3D

来自分类Dev

GL_TEXTURE_3D-Mipmap尺寸

来自分类Dev

写入GL_TEXTURE_3D

来自分类Dev

如何从.fxo文件创建ID3D11VertexShader?

来自分类Dev

从ID3D11Device :: CreateBuffer(...)释放内存

来自分类Dev

从ID3D11DeviceChild :: GetDevice()方法获取设备

来自分类Dev

从Texture2D创建UI图像