msdn.microsoft.com/directx
各位:
久违了,下面奉献微软的DirectX8.0多媒体游戏开发包的readme文件翻译稿,不正确的地方望各位大侠指正,其原文在下述网址中可以找到。
微软 directX8.0 SDK
这本CD是微软directX8.0 软件开发工具,它含有建立DirectX8.0兼容应用程序所
要求的所有软件。SDK部分也可以从微软的DirctX开发者的web站点上下载
(http://msdn.microsoft.com/directx)。
Direct8.0所包含的主要部件:DirectX8.0系统部件(运行时);向DirectX核心领
域的每一位开发者提供的DirectX8.0应用编程接口资料(用 C++ 或 Visual Basic
写程序的开发人员);DirectX 8.0 头和库文件;样例应用和源码;其他多种工具和
实用程序。
安装之后,那些DirectX的新东西将随DirectX8.0的资料一起启动,老练的开发者可能
想要看一看“什么是新的”,专业开发人员更关心“已知功能”的情况。
目录
-安装
-什么是新的
-CD布局
-DirectX8.0 SDK 发布事项和已知功能
-编译支持
安装
在安装DirectX8.0之前,总是要先卸掉以前安装的DirectX SDK(参见 卸载一节)。目录结
构和文件名有重大变化,前面版本的安装将会产生问题。
在windows2000 系统中,你必须一管理员的身份登录来按装DirectX8.0运行时库。
如果BDA cab,Direct8.0安装程序要求你重启你的系统。
卸载
卸载用控制面板里的“加入/删除程序”来卸载安装栏目里的安装条目。
那些是新的
DirectX 音响(DirectSound 和 DirectMusic)
DirectX8.0 音响含有Direct声音和Direct音乐API函数,这些函数在DirectX8.0中安排
的更紧凑和联系更密切。Direct音响有许多新的特征:
Direct声音缓冲的有效处理
DLS2 合成
任意循环点
波形发布
针对每个声音选择滤波器
6-段封装
跳动式音量控制
时间控制回放
“音频路径”:一种有力的并且易于使用Direct音响DLS2混响器进行音响效果编程的方法。
先于3D处理的声音子混和器(由DLS2混响器组成)
自动流和ACM压缩(ADPCM,等)
合成增益
音频脚本
或许你想要实际看一看用DLS2混响器作为主要的音响引擎的实际效果。DLS2混响器一般通过
Direct音乐API进行访问。请不要被“音乐”这个词所误导,DirectX8.0的Direct音乐API
特别对声音回放的效果进行了增强。这个新的设计用来支持声音效果的Direct音乐API函数
引用了音频路径的概念了解一下音频路径,其中包含了大量的支持音效的酷特征。例如当你
需要在同一个3D位置放置多个声音源时,你可以预先混合这些声源(使用音频路径技术),
而仅仅使用一个3D硬件缓冲来播放它们。
限定因素的确认
特别地讲,使用Direct声音8接口有许多限定因素需要确认。
-波形布局更紧凑
-不必再用CTRL_PAN 和CTRL_3D建立Direct声音缓冲
-不必再用CTRL_3D 和多于一个声道的波形格式建立Direct声音缓冲。即,只需用CTRL_3D建
立单一的缓冲就行了。
脚本的功能令人激动。它把游戏音响行为中的大量控制交给了音响设计师。使用脚本功能,音
响设计师能够改变音响行为,使音乐魔法班地互动和随游戏的变化播放不同的声音效果。它还
极大的缩短了视听编辑周期。这使音效和音乐得到了改进,减少了游戏的编程时间。
资料中还包含了一些关于新的全双工接口和捕获效果的章节。这些接口现在还不被支持。
如果你正在使用DirectPlayVoice,你应该使用那些接口。如果你的应用需DirectPlayVoice之
外的音频捕获,应该使用现有的DirectSoundCapture接口
Direct3D
将DirectDraw移植到Direct3D
在DirectX 8.0中,DirectDraw完全集成了微软的Direct3D,简化了应用的初始化操
作,改进了数据分配和管理的性能,并且减少了存储占用。新的Direct3D体系结构提
供了相对不经常使用的调用服务。这些服务包括:
-建立Direct3D
-建立资源(纹理、最大缓冲等)
-选择显示模式
-表述演示图象到显示
DirectX 8.0的新的图形特征:
并行的输入流能更灵活地对应到应用的动态数据结构。可编程过程语言使程序员能够
处理硬件底层,如:
-形态/动作动画
-阵列调色处理
-用户定义的光照模型
-普通环境的绘制
-过程几何处理
-其他任何开发者定义的算法
可编程像素处理语言使程序员能够利用硬件特性处理:
-单点光照/波动映射
-单点环境映射
-其他任何开发者定义的算法
多重采样过程支持:
-全景图形保真
-多重采样处理如运动效果,场景深度等
小精灵点功能:
-高性能离子系统的表述
3-D纹理粗糙控制:
-单点亮度的规则变化
-弥漫效果的控制
-容易生成非常复杂的几何纹理
初始支持的更高层次
-增强的透明的3-D处理
-处理来自主要的3-D创作工具的内容更便利
高级技术
-插入式3-D内容建立工具在Direct3D中允许使用各种Direct3D技术如多重LOD几何
和高阶表面数据生成网栅表面用于输出。
Direct3D特征注释:
-在这一范围内API不会有重大的变化。
-对于某些扩展所有特征的实现已经被分别检测,但是到现在为止,还没有对它们
进行完全组合的测试。DirectX 8.0的很多特征正在等待新的硬件,然而,对于
每一个特征的集群至少有一个实现是可用的。
-在主CPU上支持可编程的阴影控制。在主CPU上,他们的操作与硬件实现的性能相
比较,并且可以立即使用于DirectX 8.0原型和开发。
-在主CPU上支持像素级光照控制编程。这些使用DirectX 8.0原型的阴影控制功能
是为使用硬件特性而准备的。
-并行DMA数据输入支持refrast和软件几何管道
-精灵点支持refrast,软件T&L管道,并且应该支持至少一个硬件制造商的
DirectX 8.0原形驱动器
-refrast支持纹理控制
-refrast和未来的硬件中支持多重采样表现
-refrast和D3DX实用程序支持高阶主表面
D3DX( D3DX的排错):
是一个静态库。然而,为了排错在D3DX,在DirectX 8.0中还有一个D3DX动态库使用这个库
需要连接d3dx8d.lib,这是一个对应D3DX8D.DLL的入口函数库。如果你报告一个Bug,并且
把一个可以重复Bug行为的例子发送给微软,一定要确保可执行程序连接到这个动态排错库
上。动态排错库d3dx8仅仅是为排错用的,不应为应用程序使用。D3DX8D.DLL作为
DirectX 8.0 SDK的一部分被安装,不是独立发布的运行时库。也不作为未来操作系统的一
部分。如果应用想要静态连接到排错库d3dx8,就必须连接 d3dx8dt.lib。要静态连接单独
的库,请连接d3dx8.lib。
D3DX 效果框架
D3DX效果框架允许你使用文字文件定义阴影效果,文字文件描述实现一种效果的各种技术。
例如在media目录下的一个C写的效果文件water.sha。
Direct输入
Direct输入在DirectX 8.0中增加的主要的特征是Direct输入映射器(Mapper)。这个映射器
使应用对游戏行为进行编码成为可能,而不需要描绘出在设备上表现的行为本身此外,影射
器通过提供默认构造UI使用户构造设备更简单。IDirectInputDevice8::GetProperty方法支
持DIPROP_KEYNAME。DIPROP_KEYNAME以DIPROPSTRING方式从Direct输入的 DIK_*值中恢复局
部键名。IDirectInputDevice8::GetProperty方法支持 DIPROP_SCANCODE。DIPROP_KEYNAME
以DIPROPDWORD方式从Direct输入的DIK_*值中恢复设备扫描码。
Direct播放
Direct播放在DirectX 8.0中完全被重写以在高性能应用,整体可伸缩的网络游戏中提供充分
的伸缩性。在版本8.0中,Direct播放还提供了经由Direct播放语音API的语音通信功能。
注:在发布的注释中,使用的短语“Direct播放4”,“Direct播放接口”,“Direct播放4
会话”意思是IDirect播放4接口或使用IDirect播放4接口的主控绘画,就象作为
DirectX 8.0一部分的dll所实现的接口或会话一样。“Direct播放8”,“Direct播放8
接口”,和“Direct播放8会话”意指IDirect播放8...接口系列,或使用IDirect播放8...
接口系列的主控会话。
由于Direct播放8已经从底层被完全重写,IDirect播放8接口不是已存在的IDirect播放4接
口的扩展,即,从面向对象的概念上讲,Direct播放8接口不是从Direct播放4接口继承来的。
另外,Direct播放8的会话与Direct播放4的会话不是网络兼容的。
注意,Direct播放4接口仍然存在于Direct播放8中,也仍然与以前的Direct播放版本兼容。
所以由Direct播放4写成的游戏仍然可以在DirectX8.0上运行。为了获得最大的可伸缩性,
Direct播放8使用了回调模型。所有来自Direct播放8的表述都经由应用提供的回调函数递送
给应用。因此,Direct播放可以用不同线程的并行方式向应用表述多重事件。
此外,如发送和接收等重要操作也不需要数据拷贝以及线程交换就可以执行。
这种编程模式可以使Direct播放应用在单处理器或多处理器硬件上达到最大
可能的性能和伸缩性。
Direct播放8还增加了:
-更好的支持NAT,防火墙和代理服务
-由应用定义对会话玫举和响应的负荷控制
-修订地址配置,它们是基于人们可阅读的和便携而设计的通用资源定位规则
-完全使用windoes2000 I/O口
-通过删除耗时的服务而改进使用的稳定性,如组内分组
Direct播放语音接口使你能够快速容易地与存在的direct播放8或Direct播放4
的会话建立语音通讯
Direct播放语音提供如下特征:
-对等的,向前兼容服务器和混频服务器语音拓扑
-多用途多媒体数字信号解码 从1.2K/秒到63K/秒,可以用于专业级的Direct语音播放
-语音探测用于自动触发语音传送
-自动增益控制能够自动调整录制音量
-自适应排队提供了会话语音流的平滑,以使由于网络条件变化和差异导致的跳变达到
最小
-集成了Direct声音和Direct声音捕捉
-声音硬件测试专家
-支持IDirect播放8 和IDirect播放4的传输会话
Direct播放8仍然保留了以前IDirect播放版本的所有优点,如:
-会话安装与卸载
-会话的发现
-应用的导入
-播放器的管理
-分组管理
-客户/服务器和对等服务操作
-对等主控转移
-带宽限制协议
Direct放映
DirectX 8.0的发布首次把Direct放映作为DirectX核心产品。即,使用Direct放映
的应用程序再也不必安装分立的包,而且,当前DirectX 用户也可以在他们的应用
程序中直接使用Direct放映功能。除了已经存在的音视频回放与捕捉功能外,
Direct放映还提供下面一些新的特性:
对windows媒体格式的支持:两个新的滤波器使Direct放映应用能够读写windows媒
体格式的文件。ASF 文件写入滤波器建立windows媒体格式文件,并且还做一些必要
的复用与压缩工作。
Direct放映编辑服务(DES):这是一套完整的,构建于Direct放映顶层的实时与交
换服务API。这套API实现了非线性编辑服务的核心,和允许多种音视频流源中建立
复合媒体。由于允许实时效果和传输,快速的源交换,运行时组合,运行时寻道和图
表管理,DES提供了一套使用Direct放映强大功能的高层方法,同时,仍然保留了应
用访问低层Direct放映函数的能力。DES置换了不再支持的剪裁列表。
新的DVD支持:两个新的接口,IDVDControl2 和 IDVDInfo2,极大地扩展了DVD导航功
能。新的MSWebDVD ActiveX控件使这个功能可以为基于脚本的应用所用。新的DVD特征
包括:卡拉OK多声道音频支持,通过IBasicAudio的音量控制,支持帧步进帧精确搜寻,
简化了对DVD文字信息的访问,和改进了对父管理控件的支持。
DirectX媒体对象:DirectX媒体对象(DMOs)是一种写数据流控件的新方法。与Direct放映
的滤波器一样,DMOs取得输入数据并用他来产生输出数据。然而,DMOs的应用编程接口
(APIs)比相应的Direct放映APIs要简单得多。因此,DMOs要比Direct放映的滤波器更易
于建立,检测和使用。DirectX提供了一个滤波器包,使DMOs可以在Direct放映内部使用。
媒体参数:媒体参数是一个新的APIs集,他支持运行时对象特征的改变。他提供对迅速变
换的,要求高性能和可重复性的特性的精确控制。它允许一个特性沿一条实际曲线,如正
玄曲线或开方曲线实时变化。
新滤波器:
-MJPEG解压缩器:从动态JPEG解码视频流,以解压视频
-MJPEG压缩器:使用动态JPEG压缩压缩一个非压缩的视频流
-空补偿器:放弃没有显示或补偿采样数据的采样,应用可以使用这个滤波器来放弃来
自一个流的数据
-强制采样器:在媒体通过这个滤波器时恢复它的采样过程。应用可以利用这个功能来
获得过去的帧图或其他媒体数据。
动态图表构建:Direct放映的应用程序现在能够在播放时改变图表状态。这就允许新的音
视频流加到图表中,插入到图表中的实体在回放中没有任何可视间隙,并且,滤波器的链
接对于暂停和运行是独立于主图表的。
推送时钟模型支持:这改进了音视频流间的同步化默认的音频增益现在可以仆从于另一个
时钟,这就使得在不同情形中,允许应用处理声卡和捕捉设备上时钟之间的时序差。
图表编辑的增强:现在,图表编辑在插入滤波器对话框中显示滤波器登记信息并且允许你侦
测外部进程中已存在的图表(如果这些进程注册了他们自己的图表)。
Direct音乐制作器
这个版本的制作器给出了许多新的特征用于辅助创作和试听Direct音乐的内容。这些特征包
括支持音轨结构的创作,包括管理频道和涉及实体行程的合成配置,新的DLS层2格式(其中
含有立体声,分层区域和滤波)和新的脚本用API,它允许作曲家和音响设计师直接将音频内
容集成到应用中。另外的主要特征包括新的磁道类型,有波形道,脚本道,辅助管理触发器道
和音调道,它们提供了形式控制的多种方法。
DirectX 控制面板
开发人员现在可以通过DirectX控制板将DirectX产品与排错系统部件绑定到一起。
广播驱动器体系结构
广播驱动器体系(BDA)是基于流媒体广播内容的Direct放映体系下的层0和层3软件部件集。
BDA 也是在系统平台上定义用户部件接口的规范,例如,解析私有数据的滤波器。数字-TV规
范也可以使用层3部件构造滤波器图表,实现跨网络类型调谐的单一模型,自动存储和恢复电
子程序导引信息,和捕捉IP数据包括ATVEF公告,触发器和包。
CD 布局:
下面是关于完整的Direct8.0 SDK下载目录的主要描述。相关于安装时指定的选择,这些目录
可以被安装在硬盘驱动器上。
\Bin
高级DirectX应用和工具
如果安装了“Utilities"实用程序,这些应用和工具就都可以从“开始”菜单中访问。
注:日文系统要求安装IE5来适当地显示DirectX的控制面板。IE5可以从
http://www.microsoft.com/windows/ie/default.htm 获得。
\Doc
包含Direct8.0 APIs的参考资料。这些资料必须用Windows的HTMLHelp来观看。
注:HTMLHelp阅读软件要求Internet探测器5.0(IE5)的最小安装。IE5可以从
http://www.microsoft.com/windows/ie/default.htm 获得。
\Essentls
\DMusProd (Direct 音乐制作器)
- Direct音乐制作器是Direct 音乐创作工具。他允许音乐家和音响设计者使
用交互方式和各种Direct音乐的调和印象特性(DLS)资源。在制作器中也
可以写作和测试DirectX音频脚本。Direct音乐制作器安装程序和所有文件
都放在此处。
\Extras
\Direct3D
- 包输出工具
\DirectShow
- 包含DVD样板文件。更多信息请参见这个目录下的readme.txt。
- 包含可以和Direct放映和Direct放映编辑服务(DES)接口一起使用的附加媒
体。
\Documentation
- 包含英文和日文的DirectX 7 HTMLHelp的帮助资料。
- 还包含微软Word格式的DirectX 7 资料(仅有英文)。
\GameVoice
- 包含英文版游戏语音共享件的安装器,这个安装器包括语音通讯和游戏导出功
能。关于游戏语音的更多信息请访问http://www.gamevoice.com。
\Symbols
- 包含Direct8.0的Win2000和Win9x(产品和排错版)符号文件的目录。
\Include
包含DirectX8.0核心部件的头文件。
\Lib
包含DirectX8.0核心部件的库文件。
\License
DirectX8.0版本和最终用户许可协议以及再发布许可协议。
\Redist
DirectX8.0运行时再发布版本。
\Samples
包含所有抽样代码和二进制代码。在经由下载安装程序安装后,绝大多数抽样程序
都可以从”开始“菜单进行访问。
\SDKDev
这个目录含有与 SDK 一起安装的运行时库。它们是英文的并且包含了产品版和排
错版Direct8.0系统部件,这两版部件可以相互交换而不需要重新安装。
对于DirectX8.0部件,产品和排错可以通过DirectX控制面板进行互换
\retail文件夹包含安装程序,他将安装非DirectX8.0产品部件,\debug文件夹安
装所有排错部件。二者都安装DX8产品和排错部件。这些是唯一可互换的部件。
__________________________________________________________________
Direct8.0 SDK 注意和已知问题
DirectX音频(Direct声音和Direct音乐)
下面是关于DirectX8.0中可能遇到的关于Direct声音和Direct音乐的一些问题。
- ParamEQ 和失真效果用依赖于采样比率的参数确定。
把这些参数值设置到超出采样比率范围将导致:
失真:参数将按可用采样比率范围自动调整
ParamEQ:如果频率设置大于采样比率支持的频率,放弃设置效果。如果多普勒
(Doppler)设置 > 4,在Direct音乐的3D音频采样中可能会有一些断裂
- 用DSBCAPS_CTRLFX建立的Direct声音缓冲长度至少要100ms.
Direct3D
- 所有用早期DirectX8.0 β版编译的可执行文件必须用这个版本重新编译才能运行
- 在样例程序中,ALT-ENTER键能引起某些驱动程序的运行中断。
工作环境:应获取新的驱动器程序。
- MaxPrimitiveCount 值定义了最大vertices数和可发送给DrawIndexedPrimitive函
数和DrawPrimitive函数调用的primitives数。
- 一个Windows2000核心中的bug能引起一个NOSYSLOCK标志的AGP表面锁模式转换问题。
如果模式转换发生,在NOSYSLOCK加锁期间,即加锁之后和解锁之前,这个表面上的
任何内容都变得不可访问。这种情况对DX7和DX8都有发生。最可能的情形是DX8的运
行于支持硬件vertex缓冲驱动器,而使用软件vertex处理(固定或阴影)的应用。在
这种情况下,Direct3D可以维持AGP的vertex缓冲的NOSYSLOCK锁。如果用户使用
alt-tabs键离开这个应用或做其他操作引起模式变换,对vertex缓冲进行写操作的线
程将出错。有不可知的运行环境出现。微软将在下一版本的Windows中找出这个bug并
在未来的Windows2000服务包中改正之。
- DX6和DX7的IDirectDraw*::GetDeviceIdentifier实现中的一个bug引起运行时在结构
的尾部多写四个字节。要想带着这个错误运行,应该在DDDEVICEIDENTIFIER*结构的
尾部多分配四个额外的字节。在IDirect3D8::GetAdapterIdentifier版本中不存在这
个bug。
- Direct3D8运行时在所有WindowsNT平台上展示下列行为。运行全屏Direct3D8应用,按
Ctrl-Alt-Del键,按ESC键。桌面出现,但显示卡仍然在应用设定的分辨率上,不是适
当的桌面分辨率。(此时,用户可以用alt-tab键返回到应用界面)。下一版的DirectX
将改正这个问题。并且这个问题也将在下一版的Windows NT中得到改正。不鼓励开发者
带着这个问题工作,也不鼓励他们自己编码解决,因为这样的解决非常容易与现有问题
交互影响。
- 在Win9x DX7的APIs中不释放vertex缓冲就终止一个进程能引起不稳定。这是由DirectDraw
自动进程清扫代码的一个bug引起的,在所有Win9x平台上Windows 95,98,Millenirum,
它引起VBs的永久泄漏(直到重新引导系统)。应用应该仔细编码以保证退出进程之前所
有的vertex缓冲被正确地释放。
- 在响应WM_MOUSEMOVE消息时,应用应该仔细。如果应用用一个超出当前显示模式大小的
坐标调用IDirect3DDevice8::SetCursorPosition,则Direct3D运行时可能引起另外的
WM_MOUSEMOVE,他可能引起应用再次调用IDirect3DDevice8::SetCursorPosition,从而
导致无限循环。应用不要用不可用的坐标位置调用IDirect3DDevice8::SetCursorPosition,
也决不应该用重复的位置调用IDirect3DDevice8::SetCursorPosition。产生不可用鼠标光
标的一个一般情况是进入全屏时不正确地从一个窗口中删除菜单风格。SDK样例应用不正确
地使用SetWindowLong来在进入全屏以前从窗口中删除菜单条。正确的技术是在进入全屏以
前调用"hOldMenu = SetMenu(hWnd, NULL)'",并且然后在返回到开窗口模式前调用
"SetMenu(hWnd, hOldMenu);"。
- 在Win9x上使用函数ValidateDevice,成功时其返回值将是DD_OK。
点精灵:
- 当使用Direct3D软件建立T&L管道设备(用D3DCREATE_SOFTWARE_VERTEXPROCESSING标志集或
D3DCREATE_MIXED_VERTEXPROCESSING标志并且使软件的vertex处理与之关联),可以保证支
持点精灵。当使用硬件vertex处理时,有一些老的驱动器程序可能不支持点精灵,其表现为
d3dcaps->MaxPointSize = 0。应该将他们升级到DX8驱动程序。
为了保证支持点精灵的一致行为,在表现点精灵时设置
D3DRS_CULLMODE = D3DCULL_NONE
D3DRS_FILLMODE = D3DFILL_SOLID
Vertex 阴影:
- 两种vertex阴影指令可以产生输入以外的特殊结果,例如负数日志。光线指令的P-和Y-成分
日志等不应该传送负值。
驱动器/设备特殊问题:
- Windows驱动器ATI Rage 128 失败(不做任何操作)。在使用vertex阴影输出两个纹理坐标
时,如果没有设置D3DTTFF_PROJECTED,则每一个纹理坐标都能设置。
D3DX
- 这个产品中包含了加利福尼亚大学伯克利分校和D3DX自愿者开发的陷阱APIs软件。
- ID3DXSkinMesh接口目前仅支持16位设陷。32位设陷还没有实现。
- 所有其他的D3DX陷阱接口,即使资料中没有明讲,也都支持32位设陷操作。
- D3XGenerateAdjacency当前忽略ε值,而使用0.0f代替ε。
- 在D3DXMatrixPerspectiveFOV中,表面比率是x/y,而不是y/x。
Direct输入
- 在Direct输入中有一个bug,能引起Logitech Wingman Formula的滚轮产生错误轴上的踏板数
据报告。
- 还有一些已知的问题,当利用Direct输入进行排错时,这些问题可能会引起鼠标行动迟滞。
有两个注册文件能帮助缓解这个问题,他们是:
鼠标和键盘仿真 On.reg
鼠标和键盘仿真 Off.reg
鼠标和键盘仿真 On.reg程序强制使所有鼠标调用都通过Direct输入仿真,因而,可以使鼠标
在排错程序中适当地执行。鼠标和键盘仿真 Off.reg 程序关闭强制仿真过程。这些方法仅可
以在开发机上使用,不要企图把它们驻留使之成为全程设置来影响所有Direct输入的客户程序。
- 在这次发布的版本中下列设备具有设备图象支持。
+ ACT LABS RS
+ ACT LABS Force RS
+ Gravis Xterminator Dual Control
+ Gravis Blackhawk Digital
+ Gravis Gamepad Pro USB
+ Gravis Gamepad Pro
+ Gravis Eliminator Gamepad Pro
+ Gravis Xterminator Digital GamePad
+ InterAct/3dfx SV-262A HammerHead Fx
+ InterAct Axispad
+ InterAct SV-251 Raider Digital
+ Logitech WingMan Formula (Yellow)
+ Logitech WingMan Extreme Digital 3D
+ Logitech WingMan Gamepad Black (USB)
+ Logitech Wingman Rally Force USB
+ Logitech Wingman Rumblepad
+ Microsoft Sidewinder Gamepad Pro
+ Microsoft SideWinder Force Feedback Wheel
+ Microsoft SideWinder Force Feedback Pro
+ Microsoft Sidewinder FF 2
+ Microsoft Sidewinder Dual Strike
+ Microsoft Sidewinder Precision 2
+ Microsoft Sidewinder Plug and Play
+ Microsoft SideWinder Game Pad
+ Microsoft SideWinder Precision Racing Wheel
+ Microsoft SideWinder Precision Pro
+ Microsoft SideWinder Freestyle Pro
+ Microsoft SideWinder 3D Pro
Direct游戏
下面是这个版本中Direct游戏工作环境下的已知问题。
- 注意,DPN_CAPS结构的dwTimeoutUntilKeepAlive成员指定了一个最小值。第一个
活动包可能要比这个最小值迟后30秒才发送。例如,如果你设置
dwTimeoutUntilKeepAlive为60000(60秒),第一个活动包在上一个正常包之后的
60到90秒之内才可能发送。
- 在DirectX控制面板的Direct游戏标签上的“排错输出水平”滑动器是没有功能的
图标。要知道怎样改变排错输出水平,请看[sdkroot]\bin\DXUtils目录下的
dp8log.txt文件。
- 要在全双工方式下使用Direct游戏语音功能,我们推荐你应该为声卡更新驱动器程
序某些老的驱动程序不能提供可靠的全双工性能。
- 如果你连接到一个已经列举出的位置,这个列举项将自动删除。此时,如果在连接
完成后再想做异步删除操作,你将获得DPNERR_USERCANCEL错误码。你应该意识到这
是一个异常行为,并且你不应该用这个错误条件退出。
- modem服务提供者实现DirectPlay8要求TAPI2.0功能。TAPI2.0在安装Windows 98和以
后版本的部件后就可用了。但Windows 95不行。如果你的应用在Windows 95平台上要
求modem功能,TAPI2.0的Windows 95补丁可以从微软FTP站点
(ftp://ftp.microsoft.com/developr/TAPI/tapi2195.zip)获得,并且可以随应用一
起发布。
关于NATs(Network Address Translators网络地址翻译器)注意事项:
- 有很多不同的NAT可用方案,某些方案不同于其他的。我们正在试图形成各种NAT方案
的问题说明资料,但这并不全面。关于这些问题的进一步信息,请参考
http://msdn.microsoft.com/directx的DirectX开发者主页。
经由Windiws的ACM(音频压缩管理)的DirectPlay语音编解码:
- DirectPlay语音使用下面Windows ACM编解码:
- 微软 ADPCM
- 微软 GSM
- DSP Group Truespeech
- Windows系统安装这些编解码器是选择的。如果他们没有安装,一种或多种DirectPlay
语音压缩类型将不能工作。如果应用企图使用由于缺少ACM编解码器而不能工作的压缩
类型,他将接收到DVERR_COMPRESSIONNOTSUPPORTED返回码。
- 在Windows2000上,用户可以通过“添加/删除”硬件大师来安装这些编解码器。用户应
当选择“设备添加/排除故障”。当一个硬件列表显示出来时,用户应该选择“添加新
设备”,而后在下一页选择“不,从列表中选择硬件”。这将产生硬件列表。选择“声
音,视频,和游戏控制器”。“音频编解码”项目在(标准系统设备)栏列出。
- 在Windows 9x系统上,用户可以通过添加新硬件大师安装这些编解码器。在提示时,用
户应该选择“不,从列表中选择硬件”。在设备类型列表中,编解码器列出在“声音,
视频和游戏控制器”栏位下。这些编解码器列在两个制造商名下。ADPCM和GSM编解码器
列在“微软音频编解码器”下,而Truespeech编解码器列在“DSP Group”名下。
DirectShow
- 这个图象编辑工具(和某些DirectShow样例)要求MFC42.DLL存在于系统之中。
DirectX SDK的安装程序并不安装这个动态库。这仅仅是Windows 95系统下的问题,并且
需要安装微软的VC++来获得这个动态库。
- 使用DirectShow基本类库进行应用开发要求安装DirectShow样例。基类的源码现在包含
在样例的工程中而不是作为独立的类\基类目录存放。你必须编译这些基类以生成
strmbase.lib和strmbasd.lib,他们不再作为二进制文件进行安装。如果用strmbase.lib
或strmbasd.lib与你的应用进行链接,一定要确保构造和链接是使用更新了的DirectX 8
库。(而不是与VC++或微软平台SDK一起安装的较老的库)。
- 包含SDK的样例是为了与更新库进行编译和链接而构造的,他们通过构造基本类工程生成。
进一步的构造指令如下指示:
<DXSDK安装文件夹>\samples\Multimedia\DirectShow\readme.txt.
- <streams.h>头文件,与许多DirectShow特有的头文件一样,被定位到DirectShow样例基类
目录下,他们包含了基类的源码和头文件。你必须把这个基类的目录加到工程的包含路径
设置中,以便VC++能够找到所有更新了的头文件。
- 为了使用DX8带有的Teletext解码器字体,一定要确保WST_*字体被安装在\windows\fonts
目录下。
- 当使用DMOs音频效果时,有一个已知的MP3解码滤波器的问题。如果你把一个音频效果DMO
(如WavesReverb, Echo或Flange)加到一个存在的MP3滤波器图表上,其音频可能会以双
倍速度回放。这个问题将发生,只要MP3解码器与下游音频效果dmo(经由dmo滤波器)连接。
这个dmo滤波器提供了一个默认的与非压缩MP3流格式不匹配的音频输入类型。例如,如果你
演播一个22kHz的MP3文件并且加了一个DMO音效,MP3滤波器可能会错误地解释输入类型为
44kHz,而实际他是22kHz的。对44kHz的MP3文件没有这种现象。这个问题将在未来的版本中
得到解决。。
- 如果你有一个CD-ROM的SDK,Extras\DirectShow\Media下包含有附加的媒体,这个附加的媒
体可以使用DirectShow和DirectShow编辑服务接口。DirectX中含有DV-编码 AVI 视频,大
MPEG视频和高质量JPEG图象。由于DV文件非常大,在播放之前,应将其拷贝到硬盘上以保证
最好的性能。
- 用GraphEdit进行远程图象监视仅能在Windows2000上工作。
- DirectShow编辑服务的色彩生成器源滤波器如果赋给小值,可能生成不正确的蓝或绿色成分。
最好的结果是使用固体的主色或设置蓝或绿色成分为0xFF 或 0x00。
广播驱动器体系结构
在Windows2000下广播IP数据的接收的已知问题:
- 在安装有BDA接收卡的Windows2000系统重新引导之后,BDA NDIS IP NIC并不立即活动。仅仅
在应用将BDA IPSink滤波器插入图表和连接他的输入脚后,他才转成活跃状态。只要是通过连
接IPSink滤波器的输入脚击活的,就要花费20到30秒的时间使BDA NDIS IP NIC被分配一个IP
地址。这个分配了的地址将成为一个Net 10地址。一旦击活BDA NDIS IP NIC,他将保持活动状
态直到系统重新引导。
- 可能有一些应用把BDA NDIS IP NIC作为默认的LAN适配器。如果BDA NDIS IP NIC处于活动状态,
这些应用将将出错。为了使BDA NDIS IP NIC处于非活动状态,重新引导系统并且不要运行TV图
表或应用。
资料
- 要适当的观察DirectX资料,就要从DirectX 8.0 SDK CD盘上安装这些资料。特别要全部安装,
如果选择客户化安装,一定要确保你选择了资料安装。
- 在DirectX 8.0资料中的已知问题已经写进另一个文件中你可以在DirectX8_Doc_Readme.txt
文件中查找这些问题的列表。这个文件在<DXSDKCDRoot>\dxf\doc\DirectX8文件夹中。在安装
DirectX8资料时,这个文件也安装在<DXSDKInstallFolder>\doc\DirectX8目录下。
样例
一般问题:
- 某些样例编译时将有 UNICODE 标志定义错。
- VC/C++ 5的DirectX 8.0兼容性依赖于VisualStudio 97的SP3包的安装。如果你看到下面的错误
提示:
“致命错误LNK1106:不可用文件或磁盘满:不能寻道到0x389bc8bf”
"fatal error LNK1106: invalid file or disk full: cannot seek to 0x389bc8bf"
“内部错在Pass1期间”
"Internal error during Pass1"
此时你需要更新VC/C++ 5的安装。Visual Studio的SP包可在
http://msdn.microsoft.com/vstudio/sp/vs97
找到。
Direct3D 样例:
- 某些显示硬件和驱动器存在有多种问题。请让我们知道任何你所遇到的问题,尤其是样例或驱
动器相关的问题。
DirectShow 样例:
- 在\media文件夹下有几个.XTL样例文件.这些文件说明了DirectShow编辑服务中的一些可用的
功能.你可以使用XTLTest C++,XTLTestVB 和DexterVB的VisualBasic样例来运行这些文件。
所有提供的XTL文件都涉及到SDK媒体目录下的媒体文件。运行XTL文件是一个好的方法来知道
新的DirectShow编辑服务APIs实现了什么概念。一个简单的demo例子,在XTLTestVB样例的客
户域上拖拽几个SDK媒体目录的样例.XTL文件。
- DirectShow VB样例比C++样例演示更多的DES功能。如果你对DES感兴趣,要确保运行
SlideShowVB 和TrimmerVB。你也可以使用DexterVB ("Dexter Explorer")应用作为XTL开发
测试工具。
- 在某些系统上(引用了不可用内存),Texture3D样例已知是失败的。此时你会看到错误信息。
这种失败在D3D初始化中发生。我们建议更新你的视频卡驱动程序到当前版本,这样一般就能
解决这个问题。
- DirectShow IDL文件习惯上当前定位在SDK的\include\DShowIDL目录下。
- 在任何依赖于\BaseClasses库的样例可以构造和执行之前,你应该构建他。请回顾DirectShow
样例跟目录下的Readme.Txt文件以获得关于构建样例的更多信息。
VB的DirectX样例:
- DBMON.exe 是一个应用,他允许VB的DirectX开发者利用扩展输出对DirectX提供的安装进行排错。
这个应用仅可以在Windows2000下工作。使用时,执行这个应用所有排错输出都将被捕获和发送
到控制台窗口。如果你不能看到排错输出,检查确保你安装了排错版本的DirectX,并且你正在
运行Windows2000。
- DXVB消息服务器是client/server立即消息应用的服务器部分。这个样例要求使用ActiveX数据对
象(ADO)来维护所需数据。如果你运行的是Windows 9x,你就必须要有最近版本的ADO安装在你
的机器上来编译和运行这个样例。你可以随VB专业版一起安装最近的ADO或从
http://www.microsoft.com/data/ado/
下载这个ADO。通过默认安装VB 6企业版也可安装ADO。
- 使用VB的DirectPlay,通过搜索和交流,如果你已经阅历了一些问题,你可能需要更新你的系统。
更新,安装DCOM98:
http://download.microsoft.com/msdownload/dcom/98/x86/en/dcom98.exe
其他
- DirectDraw的“排错层”图标在DirectX控制面板上没有功能。代之的是“排错输出层”图标在
Direct3D表中,这在DDraw 和 D3D8中都有效。还要注意,排错的DirectDraw标签出现就好象他
是来自"Direct3D8"一样。
- 在NEC PC98系统上DirectX运行时库不能工作。在这个系统上SDK和运行时库的安装被有意地阻塞
了。
- DirectX 8.0运行时要求Pentium兼容的CPU操作。DirectX运行时安装将不能安装在不支持Pentium
兼容的处理器上。某些老的Cyrix处理器,与Pentium指令集兼容,报告为x486处理器,因而不支
持DirectX 8.0运行时的安装。
- 在从DirectX SDK安装DirectX 8.0运行时库时,你将注意到需求大小比原来的DirectX版本有所膨
胀。例如,如果你仅仅从DirectX SDK安装DirectX 8.0运行时库到一个具有低磁盘空间系统上你
将会看到至少要求120 MB。这是因为在每一次DirectX SDK运行时安装中包含了零售版和排错版
的运行时库(这允许开发者在零售版和排错版之间切换而不需要重新安装)。然而,这种膨胀
尺寸在新发布的SDK运行时包中却不存在。新发布的安装将要求满意的小空间。这个尺寸依赖于
磁盘格式(Fat16/32及NTFS),大约要40MB的自由空间要求用于解压缩和安装,而大约15MB空间
要求一次安装(仅仅在系统没有安装以前版本的DirectX情况下,这个尺寸才是对的)。当这些
要求不满足时,DirectX安装API检查和显示错误信息。
- Windows 95日语系统将要求Windows 95或IE5.0(或以后)的MS UI哥特补丁用于DirectX控制面板
显示特征。MS UI哥特补丁可以在:
http://www.microsoft.com/JAPAN/win95/msgotupd/default.htm
和IE5.0(或以后)可以在:
http://www.microsoft.com/windows/ie/default.htm
找到。
__________________________________________________________________
编译支持
所有DirectX 8.0 SDK样例程序都是用Visual Studio 6.0开发和编译的。为了便利,我们还提供了
Visual Studio 6.0 DSP文件。
所有DirectX 8.0库,除了DirectShow库以外,都是与Visual Studio 5.0 SP3或更高版本兼容的。
__________________________________________________________________
特别致谢(略)