D3D动态纹理播放视频

来源:互联网 发布:嘉实红利优化股票基金 编辑:程序博客网 时间:2024/06/08 04:54

 

 

 

D3D动态纹理播放视频

 

 

 

       动态纹理应用范围很广,比如在D3D或OpenGL中播放视频便是使用了这一技术。播放视频当然可以用VMR,但是VMR是老版的DXSDK中提供的一个模块,已经过时,而且VMR必须使用DirectShow,就目前看跨平台的ffmpeg多媒体框架等还是占领不少领域的,即便是微软也想用新的Media Foundation框架取代DirectShow。所以这里直接使用动态纹理实现播放视频。

       首先要用多媒体框架搭建播放器,我们这里使用DirectShow搭建一个播放WMV文件的播放器。需要写一个用于播放的filter,它的任务是把WMV中解码后的的视频画面(一帧)写入一张动态纹理中。在D3D中会用这张纹理绘制出来,从而播放视频。我这里使用了D3D作为示例,当然使用OpenGL,以及OGRE等引擎也是如此。

 

下图所示为DShow的Filter Graph:

 

        上图中的名叫Texture Renderer的filter便是写入动态纹理,给D3D渲染。

 

 

下面是D3D渲染结果:

 

       我同时在一个立方体和一个矩形上播放视频。

 

应用在项目中,加入评分等功能:

 

 

 

 

 

原创粉丝点击