随笔分类 -  Delphi 与 DirectX

1 2 3 4 5 6 下一页
在 Delphi 下使用 DirectSound (18): 3D 特效
摘要:DirectSound 3D 特效相关接口: IDirectSound3DBuffer8、IDirectSound3DListener8.IDirectSound3DBuffer8 是声源, 它可以有一个或多个; IDirectSound3DListener8 是听者, 它只能有一个.IDirectSound3DBuffer8 通过 QueryInterface() 从次缓冲获取, 要求该次缓冲建立时必须指定 DSBCAPS_CTRL3D;IDirectSound3DListener8 通过 QueryInterface() 从主缓冲区获取, 该主缓冲区建立时也必须指定 DSBCAPS_CTR 阅读全文
posted @ 2011-01-28 00:15 万一 阅读(3815) 评论(3) 推荐(2) 编辑
在 Delphi 下使用 DirectSound (17): 频率均衡效果器 IDirectSoundFXParamEq8
摘要:测试代码:窗体设计:运行效果图: 阅读全文
posted @ 2011-01-24 21:04 万一 阅读(1964) 评论(4) 推荐(1) 编辑
在 Delphi 下使用 DirectSound (16): 环境混响效果器 IDirectSoundFXI3DL2Reverb8
摘要:IDirectSoundFXI3DL2Reverb8 效果器除了拥有 GetAllParameters()、SetAllParameters() 外, 还比其它效果器多出了四个方法:GetQuality()、SetQuality()、GetPreset()、SetPreset().测试代码:窗体设计:运行效果图: 阅读全文
posted @ 2011-01-24 17:25 万一 阅读(1637) 评论(2) 推荐(1) 编辑
在 Delphi 下使用 DirectSound (15): 测试混响效果器 IDirectSoundFXWavesReverb8
摘要:测试代码:窗体设计:运行效果图: 阅读全文
posted @ 2011-01-23 23:55 万一 阅读(1456) 评论(4) 推荐(0) 编辑
在 Delphi 下使用 DirectSound (14): 测试镶边效果器 IDirectSoundFXFlanger8
摘要:测试代码:窗体设计:运行效果图: 阅读全文
posted @ 2011-01-23 23:29 万一 阅读(1259) 评论(0) 推荐(0) 编辑
在 Delphi 下使用 DirectSound (13): 测试回声效果器 IDirectSoundFXEcho8
摘要:测试代码:窗体设计:运行效果图: 阅读全文
posted @ 2011-01-23 23:16 万一 阅读(1328) 评论(1) 推荐(0) 编辑
在 Delphi 下使用 DirectSound (12): 测试失真效果器 IDirectSoundFXDistortion8
摘要:测试代码:窗体设计:运行效果图: 阅读全文
posted @ 2011-01-23 22:54 万一 阅读(1091) 评论(0) 推荐(0) 编辑
在 Delphi 下使用 DirectSound (11): 测试压缩效果器 IDirectSoundFXCompressor8
摘要:测试代码:窗体设计:运行效果图: 阅读全文
posted @ 2011-01-22 21:26 万一 阅读(1113) 评论(10) 推荐(0) 编辑
在 Delphi 下使用 DirectSound (10): 测试合唱效果器 IDirectSoundFXChorus8
摘要:测试代码:窗体设计:运行效果图: 阅读全文
posted @ 2011-01-21 23:30 万一 阅读(1490) 评论(10) 推荐(1) 编辑
在 Delphi 下使用 DirectSound (9): 效果器初步及 IDirectSoundFXGargle8 效果器
摘要:只有使用 IDirectSoundBuffer8 的次缓冲区才能设置"特效", 主缓冲区主要负责的是混音和处理 3D 效果.IDirectSoundBuffer8(非 IDirectSoundBuffer) 支持以下效果器:使用步骤:1、通过 IDirectSoundBuffer8 的 SetFX() 方法关联特效, 这个过程主要是给 SetFX() 方法的参数准备 TDSEffectDesc 结构数组;2、通过 IDirectSoundBuffer8 的 GetObjectInPath() 方法获取特效对象;3、通过特效对象的 SetAllParameters() 方法设置特效参数.9 个特 阅读全文
posted @ 2011-01-21 15:53 万一 阅读(2134) 评论(2) 推荐(0) 编辑
在 Delphi 下使用 DirectSound (8): IDirectSound8.DuplicateSoundBuffer() 与 IDirectSoundBuffer.GetStatus()
摘要:IDirectSoundBuffer.GetStatus() 用于获取缓冲区的当前状态, 譬如是否正在播放、是否指定为循环播放等等.IDirectSound8.DuplicateSoundBuffer() 是通过根据已存在的缓冲区建立缓冲区副本, 这类似引用; 通过它可以让同一个声音交叉播放.复制缓冲区不能复制主缓冲区.示例: 阅读全文
posted @ 2011-01-20 11:41 万一 阅读(2411) 评论(4) 推荐(0) 编辑
在 Delphi 下使用 DirectSound (7): 播放资源文件中的 Wave 数据
摘要:首先要修改前面自定义的 ReadWaveFile 单元, 给它增加一个 OpenResource() 方法以直接读取资源文件中的 "WAVE" 数据;为避免混淆, 把单元名 ReadWaveFile 同时改为 ReadWave; 类名 TReadWaveFile 改为 TReadWave.下面的例子如图载入了三个 Wave 文件到资源:本例可充分体现 DirectSound 可同时播放多个声音的特点; 实现代码:本节演示录像: http://files.cnblogs.com/del/DirectSound_7.rar 阅读全文
posted @ 2011-01-19 16:44 万一 阅读(2040) 评论(23) 推荐(0) 编辑
在 Delphi 下使用 DirectSound (6): 按文件自己的格式(TWaveFormatEx)播放
摘要:这必须手动建立主缓冲区. 阅读全文
posted @ 2011-01-19 14:04 万一 阅读(1979) 评论(0) 推荐(0) 编辑
在 Delphi 下使用 DirectSound (5): 获取或设置缓冲区的格式:
摘要:次缓冲区(或叫辅助缓冲区)尽管使用了波形文件自己的 TWaveFormatEx, 但最终播放的却只是 22050HZ 的 8 位立体声.因为次缓冲区最终要混入主缓冲区才播放, 可主缓冲区的缺省格式是 22050HZ 的 8 位立体声(这利于在不同应用程序之间的平滑切换).次缓冲区一旦建立, 其格式就无法修改了(无法使用缓冲区对象的 SetFormat() 方法); 好在主缓冲区可以重置格式.也就是说, 播放 44100HZ、16 位的 Wave 时, 如果不通过主缓冲修改格式则无法原声播放.要修改格式只能手动建立主缓冲区(我们无法使 DirectSound 自动建立的主缓冲区, 没有入口).手 阅读全文
posted @ 2011-01-19 13:12 万一 阅读(1957) 评论(4) 推荐(0) 编辑
在 Delphi 下使用 DirectSound (4): 设置音量、相位、播放频率和播放位置
摘要:通过 IDirectSoundBuffer 的 SetVolume、SetPan、SetFrequency、SetCurrentPosition 方法可以简单进行这些设置.同时 IDirectSoundBuffer 也有对应的 GetVolume、GetPan、GetFrequency、GetCurrentPosition 方法.关键的一点是如果能让缓冲区接受音量、相位和频率的设置, 必须在建立缓冲区时指定相应的标志.下面的常量说明了它们的取值范围:在上一个例子中, 最占篇幅的就是那两个函数; 为了更方便使用, 把它们做在了一个 TReadWaveFile 类里:测试程序用到了四个 Butto 阅读全文
posted @ 2011-01-16 22:51 万一 阅读(4010) 评论(15) 推荐(0) 编辑
在 Delphi 下使用 DirectSound (3): 播放第一个 Wave 文件
摘要:建立 IDirectSound8 对象后, 首先要通过其 SetCooperativeLevel() 方法设置协作优先级;因为其它应用程序有可能同时使用该设备(声卡), 这是必需的步骤.然后通过 IDirectSound8.CreateSoundBuffer() 方法建立缓冲区, 这个过程主要是填写 TDSBufferDesc 结构;填写 TDSBufferDesc 结构时又同时需要 TWaveFormatEx 结构的指针, 这个 TWaveFormatEx 结构我们会直接从 Wave 文件中读取.除非优先级设置为 DSSCL_WRITEPRIMARY, 程序至少应该有一个次缓冲区(这同时会自 阅读全文
posted @ 2011-01-15 23:43 万一 阅读(3667) 评论(8) 推荐(0) 编辑
在 Delphi 下使用 DirectSound (2): 查看设备性能
摘要:使用 DirectSound 前应先建立 IDirectSound8 对象(之前的版本是 IDirectSound):然后通过 IDirectSound8 对象(它代表着一个播放设备)创建缓冲区, 以写入声音信息.这里的缓冲区分 "主缓冲区" 和 "次缓冲区". 主缓冲区只有一个; 次缓冲区可以有多个, 以实现多个声音的同时播放.DirectSound 会尽量使用硬件(声卡)提供的缓冲区; 如果硬件不支持则只好使用系统内存做缓冲区, 但这样效率不及前者.通过 IDirectSound8.GetCaps() 方法可以获取指定设备的详细性能:查看默认设备性能的测试程序:查看所有设备性能的测试程序: 阅读全文
posted @ 2011-01-13 21:12 万一 阅读(2145) 评论(5) 推荐(0) 编辑
在 Delphi 下使用 DirectSound (1): 枚举播放设备
摘要:现在的 Delphi(2010、XE) 已经自带了 DirectX 的相关单元(...\source\rtl\win\).这是常见的代码:在回调函数中直接使用窗体控件不好, 修改如下:获取更多信息: 阅读全文
posted @ 2011-01-12 20:26 万一 阅读(4399) 评论(11) 推荐(2) 编辑
Delphi 与 DirectX 之 DelphiX(95): TDIB.x
摘要://让 TDIB 的这些特效烦透了: 多、还重复、又不完善; 还没有测试或测试失败的方法: procedure DrawShadow(SrcDIB: TDIB; X, Y, Width, Height, Frame: Integer; FilterMode: TFilterMode); procedure DrawShadows(SrcDIB: TDIB; X, Y, Width, Heigh... 阅读全文
posted @ 2009-01-25 12:48 万一 阅读(3437) 评论(4) 推荐(0) 编辑
Delphi 与 DirectX 之 DelphiX(94): TDIB.DrawAdditive();
摘要:本例效果图: 代码文件: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DIB, StdCtrls; type TForm1 = class(TForm) DXPaintBox1: TDXPa... 阅读全文
posted @ 2009-01-25 11:01 万一 阅读(2140) 评论(0) 推荐(0) 编辑

1 2 3 4 5 6 下一页