手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>C/C++>列表

DirectX 9 SDK for Borland C Builder

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
DX9SDK: 研发库
SAMPLES: 示例程式

示例程式包括:
★ Direct3D 就是 D3D, 处理 3D 图像和图像显示的
★ DirectInput 操控键盘、鼠标、手柄、力反馈系统等输入设备
★ DirectMusic 播放音乐, 能够加入多种播放效果
★ DirectPlay 这个是连网方面的研发库, 研发网络游戏、聊天室、音频及视频的网络传输等
★ DirectShow 视频采集及播放影视、媒体文档、VCD、DVD 等
★ DirectSound 播放、采集(录制)声音文档
★ Misc 杂项程式
★ Demos 一个完整的 3D 游戏演示程式

一共包含 179 个 C Builder 示例程式。
这些程式都是根据原 DirectX 9 SDK 示例程式改编的。

▲ 为什么没有 DirectDraw 的例子?
a) DirectDraw 从 DirectX 7 之后再也不升级了, 在 DirectX 9 里面保持 7 版本
b) BCB 自带 DirectDraw 的例子, 默认在 C:\Program Files\Borland\CBuilder6\Examples\DDraw 文档夹里面
c) DirectDraw 的功能都能够用 Direct3D 来代替, 并且提供更多的功能 (Alpha 和旋转等)

【安装方法】

① 用 WinRAR 3 以上版本解压缩
② Project→Options, 在 Directories/Conditionals 配置里,
→ 点击 Include path 右面的“…”按钮,添加包含 DirectX 9 SDK 的 Include 文档夹的路径,并且移动到最前面
→ 点击 Library path 右面的“…”按钮,添加包含 DirectX 9 SDK 的 Lib 文档夹的路径,并且移动到最前面
③ 一些细节问题请参考本文后面的注意事项。

【注意事项】

① STRICT 定义: 无论用 Visual C 还是 Borland C , 编译 DirectX 程式都需要有这个定义, 不是什么特别的需要。
Project → Options → Directories/Conditionals:
在 Conditional defines 里面添加 STRICT 定义 (点击右面的“…”按钮添加)。

② EInvalidOp: 假如程式在调试时总是提示 EInvalidOp 错误,一般是因为 Borland 和 Micro$oft 浮点数错误处理方式不同引起的。

解决方法:
在 WinMain 的一开始, 或其他程式初始化的位置写下面语句:

D3DFPExOff(); //解决程式产生 EInvalidOp 错误问题, 这个函数在 <d3dbc.h> 里定义。

③ ntdll.DbgBreakPoint: 假如在 debug 程式时频繁出现在 ntdll.DbgBreakPoint 停下来, 需要按 200 多次 F9 (C Builder)
或 F5 (Visual C ) 才可跳过, 但这并不影响 .exe 文档, 也不是错误, 脱离环境能够正常运行。

解决方法:
a) 假如您觉得没关系, 反正能够正常运行, 也不用 debug 程式, 能够不做任何处理。
b) 假如您比较讨厌 ntdll.DbgBreakPoint, 或想调试程式, 请在程式初始化时调用这个函数:
VictorNtDllINT3(); //禁止在 debug 程式时在 ntdll.DbgBreakPoint 停下来, 在 <d3dbc.h> 里定义

④ enum: M$ 的 enum 类型一般都做 int 类型处理, 而 Borland 会根据取值范围按照 char,short,或 long 处理,
这样会因为期望的 sizeof 不同而引起程式出错。

解决方法:
Project→Options→Compiler, 需要选中 Compiling 里面的 Treat enum type as ints.

⑤ MFC: 假如用 BCB 编译 MFC 程式, 也只有在编译 MFC 程式的情况下, 需要选择菜单: Project→Options,

a) 在 Advanced Compiler 配置里,选中 Source 下的 MFC compatibility

b) 在 Directories/Conditionals 配置里,
→ 点击 Include path 右面的“…”按钮,添加一项 $(BCB)\include\mfc
→ 点击 Library path 右面的“…”按钮,添加一项 $(BCB)\lib\Psdk

c) 在主程式 .cpp 文档里加上下面定义:

#ifdef _DEBUG
# pragma link "nafxcwd.lib"
#else
# pragma link "nafxcw.lib"
#endif

按照这样做, MFC 程式一般都会编译和链接通过的。
通过这个配置, BCB 编译 MFC 的程式是完全编译的单独 .exe 文档, 无需带 VC 或其他的 MFC 动态库运行。

⑥ DirectShow 里面有几个例子需要 Windows Media Format SDK 7 研发包的支持, 由于 M$ 的 DirectX 9 SDK 里面没提供,
所以这里也不提供了, 需要的自己解决吧。
M$ 新版 WMFSDK9 不提供 WMFSDK7 的 lib, 并且 WMFSDK7 已不提供下载了, 所以要研发 Windows Media 应该考虑使用 WMFSDK9 了。

⑦ strmbase.lib 补充的 DirectShow 库文档 (2004-08-27)
包含两个文档: strmbase.lib 和 strmbasd.lib, 其中 strmbase.lib 是 release 版本, strmbasd.lib 是 debug 版本的。
由于 debug 和 release 版本的库文档差别比较大, 需要在不同的编译选项采用不同的库文档:

使用方法:
解开压缩包, 替换原来 \DX9BCB\SAMPLES\DirectShow\BaseClasses 文档夹的内容
在主程式 .cpp 文档里加上下面定义 (实际上在工程里的哪个 .cpp 文档都能够, 为了阅读程式和查找方便, 写在主程式 .cpp 文档里)

#ifdef _DEBUG
# pragma link "strmbasd.lib"
#else
# pragma link "strmbase.lib"
#endif

⑧ 每个例子都带有 readme.txt, 在编译之前请先认真阅读。


【修改记录】

① 文档 SAMPLES\Common\Src\dxutil.cpp

函数 DXUtil_GetDXSDKMediaPathCch
修改前: 从注册表里面读出程式的数据文档存放位置, 这不符合绿色软件的原则。
修改后: 从全局变量 _DxAppDataPath 读取数据文档的存放位置, 无需读写注册表了。

函数 DXUtil_SetDXSDKMediaPathCch
新增函数, 可配置程式的数据文档的存放位置, 取代原来的读写注册表。


② 程式 SAMPLES\Direct3D\VCLFog\

原来是 MFC 程式, 修改为 VCL 程式, 程式结构做了调整, 基本上保持原来的代码。

③ 其他程式 (包括MFC的) 基本保持原来的代码, 可能有一些细节问题, 在这里就不一一赘述了。




文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

热点关注
IDC资讯 虚拟主机 域名注册 托管租用 vps主机 智能建站
网站运营 建站经验 策划盈利 搜索优化 网站推广 免费资源
网站联盟 联盟新闻 联盟介绍 联盟点评 网赚技巧
行业资讯 业界动态 搜索引擎 网络游戏 门户动态 电子商务 广告传媒
网络编程 Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术 Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷 Internet Explorer
网页制作 FrontPages Dreamweaver Javascript css photoshop fireworks Flash
程序设计 Java技术 C/C++ VB delphi
网络知识 网络协议 网络安全 网络管理 组网方案 Cisco技术
操作系统 Win2000 WinXP Win2003 Mac OS Linux FreeBSD
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 价格总览 | 资讯中心 | 友情链接 | 网站地图 | 招贤纳士 | RSS