游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2609|回复: 4

VMR9 叠加水印问题

[复制链接]

5

主题

21

帖子

82

积分

注册会员

Rank: 2

积分
82
发表于 2014-3-4 17:13:12 | 显示全部楼层 |阅读模式
本帖最后由 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成功,可以使用的

求助给位大大帮忙。。

2

主题

6

帖子

28

积分

注册会员

Rank: 2

积分
28
发表于 2014-3-4 18:45:16 | 显示全部楼层
楼主问题解决的话,还请不吝告知,因为我的毕业设计中很可能也会用到,目前我还没有研究这些知识,所以不能为楼主解答疑惑了,万分抱歉。

5

主题

21

帖子

82

积分

注册会员

Rank: 2

积分
82
 楼主| 发表于 2014-3-5 09:57:49 | 显示全部楼层
CHS 发表于 2014-3-4 18:45
楼主问题解决的话,还请不吝告知,因为我的毕业设计中很可能也会用到,目前我还没有研究这些知识,所以不能 ...

没事,帮顶就好

5

主题

21

帖子

82

积分

注册会员

Rank: 2

积分
82
 楼主| 发表于 2014-3-7 11:44:55 | 显示全部楼层
人工置顶。。。

5

主题

21

帖子

82

积分

注册会员

Rank: 2

积分
82
 楼主| 发表于 2014-3-11 15:53:12 | 显示全部楼层

人工置顶。。。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-2-26 05:16

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表