|
本帖最后由 a35181706 于 2014-3-4 18:01 编辑
现在播放视频成功了,然后,因为需求,要在视频中添加一些图片,图片的内容是一些提示信息
我现在是通过VMR9,以水印的方式添加上去的,但是出了问题,总是添加失败,代码如下:
m_VMR9Filter->QueryInterface(IID_IVMRMixerBitmap9, (void**)&pMixerBitMap);
IDirect3DSurface9 *pMixerMapTexture = NULL;
IDirect3DTexture9 *pTexture;
D3DXCreateTextureFromFileEx(pD3DDevice,"selectrect.dds",256,256,0,0,D3DFMT_A8R8G8B8, D3DPOOL_SYSTEMMEM,D3DX_FILTER_TRIANGLE,D3DX_FILTER_TRIANGLE,0,0,0,&pTexture);
VMR9NormalizedRect rtt;
rtt.left = 0;
rtt.top = 0;
rtt.bottom = 0.3f;
rtt.right = 0.5f;
MixerMap.dwFlags = VMR9AlphaBitmap_EntireDDS ;
MixerMap.dwFilterMode = 0;
MixerMap.rDest = rtt;
MixerMap.fAlpha = 0.5f;
MixerMap.hdc = NULL;
pTexture->GetSurfaceLevel(0,&MixerMap.pDDS);
MixerMap.clrSrcKey = RGB(0, 0, 0);
MixerMap.rSrc.top = 0;
MixerMap.rSrc.left = 0;
MixerMap.rSrc.bottom = 1.0f;
MixerMap.rSrc.right = 1.0f;
hr = pMixerBitMap->SetAlphaBitmap(&MixerMap);
然后hr总是返回E_INVALDARG无效的参数
我看了MSDN上的,返回这个值有以下可能
1.suface的POOL不是SYSTEM
2.surface的Format不是D3DFMT_X8R8B8G8或者D3DFMT_A8R8B8G8
3.rSrc超出了表面的大小
4.rSrc是空的
5.rSrc超出了显卡最大的尺寸
6.使用了无效的filterMode
我查了一下,以上的这些我都没有。。但还是返回E_INVALDARG,创建的Texture成功,可以使用的
求助给位大大帮忙。。
|
|