第一次在CSDN上写博客,多多关照。
DirectX是一种标准,或者说是一种协议,或者中间层,时硬件与应用开发人员的联络员。
DirectX9.0家族的成员:
1.DirectX Graphics
集成了以前的DirectDraw和Direct3D。
DirectDraw负责2D加速,以实现对显卡内存和系统内存的直接操作;
Direct3D 提供三维绘图的硬件接口,是开发3D游戏的基础。
2.DirectInput
主要支持输入服务(包括鼠标,键盘,游戏杆),同时也提供输出设备。
3.DirectPlay
主要提供多人网络游戏的通信,组织功能。
4.DirectSetup
主要提供自动安装DirectX组件的API功能
5.DirectMusic
主要直至MIDI音乐合成和播放功能
6.DirectSound
主要提供音频捕捉,回放,音效处理,硬件加速,直接设备访问等功能
7.DirectShow
为在Windows平台上处理各种格式的媒体文件的回房放,音视频采集等高性能要求的多媒体应用,提供了完整的解决方案。
8.DirectX Media Objects
DirectShow Filter的简化模型,提供更方便的流数据处理方案。
下面详细介绍DirectShow。
DirectShow提供了开发多媒体应用程序的总体框架,或者说它本身一种框架。下面这个图很重要,清晰的说明了问题。
Ring0以下是硬件层,Ring3是属于应用层。
DirectShow使用FilterGraph模型来管理整个数据流的处理过程。参与数据处理的各个模块叫Filter。
按照功能,Filter分3类,分别是:Source Filter,Transform Filter,Rendering Filter。
Source Filter,主要负责获取数据,数据源可以是文件,也可以是音视频采集卡,如数字摄像机等。然后将数据往下传输。
Transform Filter 主要负责数据的格式转换,例如数据流分离/合成,编码/解码等。然后将数据继续往下传输。
Rendering Filter 主要负责数据的最终去向---将数据送往显卡、声卡进行多媒体的演示,或者输出到文件进行存储。
这3类Filter就是整个DriectShow的核心,DirectShow又是多媒体应用程序的核心,所以弄懂这3类filter,多媒体应用开发也就算是入门了。