在CB中举行DirectX编程(1)[VC/C++编程]
本文“在CB中举行DirectX编程(1)[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
C++ Builder是一个可视化的C++编程环境,它为编程人员供应了一种便利高效、简便的C++语言开辟工具,因此已为广大C++程序员所爱好,DirectX开辟工具包是微软公司供应的一套Windows9X下开辟高性能图形、声音、输入输出和网络游戏的接口,其高效的直接硬件拜候、程序与硬件设备之间的相对独立等特点,几近使得DirectX成为唯一可以在Windows操作系统下开辟游戏程序的基本工具软件.
固然C++ Builder中直接包含了一套DirectX3的开辟包,也供应了一些例程,但是这些例程没有系统化的阐明,同时也不合适DirectX5以上的程序开辟.另一方面,几近全部关于DirectX开辟的书籍和文献均利用Visual C++语言描写,所以作者将自己在C++ Builder中的一些开辟经验介绍给读者.
本文合适具有C++ Builder面向对象编程经验的读者,实例开辟环境为中文Windows98、C++ Builder4、DirectX6或以上的开辟工具包.
一.DirectX简介
1_1.DirectX的特点
1_2.DirectX是一种Windows环境下尺度的高性能游戏、多媒体开辟工具包,利用DirectX开辟的程序可以与操作系统默契地配合成为“真正”的桌面利用程序;可以操纵硬件厂商供应的驱动程序接口,充分最佳的设备性能;通过直接底层硬件操作,实现最快速、短延时、设备无关的底层接口.
1_3.DirectX采取了组件对象模子(COM)尺度,因此关于差别对象的版本可以有差别的接口,这使得用DirectX开辟的程序在将来将得到完好兼容和支持的保证.
1_4.DirectX的构造
DirectX需求以设备无关的办法供应设备相关的性能,所以DirectX的构造是由两个驱动程序构成:硬件抽象层(HAL)和硬件模拟层(HEL),当Direct对象成立时,会同时成立一张“兼容表”,此中记录了当前硬件系统支持的功效,当DirectX需求实现某个功效时就查询该表,得到硬件对功效的支持信息,假如功效可以得到硬件支持,则向HAL发出求,以得到硬件的支持,不然向HEL发出恳求,以模拟方法实现功效.
1_5.DirectX的主要构成
(1)DirectDraw:直接拜候图形硬件,管理用于显示的内存(显示内存和系统内存),供应高速图形和页面切换动画;
(2)Direct3D:供应3D硬件接口;
(3)DirectInput:主要支持输入服务,同时支持输出设备;
(4)DirectSound:供应3D声音效果,管理声卡内存;
(5)DirectPlay:供应网络多人游戏的通讯、组织功效;
(6)DirectSetup:自动安装DirectX驱动程序.
本文将按照DirectX的上述构成,辨别以实例介绍其在C++ Builder中的实现办法.
二.DirectDraw程序计划
2.1 DirectDraw实现的底子—显示方法的设置
计划图形程序首先碰到的问题是将屏幕设置成一种符合的图形显示方法,然后把图形绘画到屏幕页面上.假如您在DOS下开辟图形利用程序,这将是很简单的事,只要调用DOS的中止服务程序便可实现,但是利用用DirectDraw就对比复杂.由于DirectDraw的计划目标是供应设备无关的编程接口和高效、多功效的硬件拜候支持,所以DirectDraw需求考虑更多的问题.
DirectDraw在Windows环境下支持两种图形方法:全屏幕独占方法和窗口方法.这里我先以全屏幕独占方法,介绍DirectDraw设置屏幕显示方法步骤,函数具体利用格局和编程办法将在2.2中介绍:
2.1.1 挑选硬件设备
计算机系统不一定只有一个DirectDraw硬件抽象设备,比方,一台计算机大概有两台或更多的显示器,那么DirectDraw对象与哪个HAL对应呢?我们可以利用DirectDrawEnumerate函数来列举系统全部已安装的设备,以供挑选,并返回设备的唯一标识GUID.DirectDraw默许主显示设备的GUID为NULL;
2.1.2 成立DirectDraw对象
由于DirectX是利用面向对象的程序计划技术,因此,利用DirectDraw编程就首先要成立DirectDraw对象.利用DirectDrawCreate函数及将第一步得到的设备GUID作为参数可以成立基于所选设备的DirectDraw对象;
2.1.3 获得DirectDraw更高版本的COM接口
假如您不打算利用DirectX5以上版本供应的功效则可以跳过本步骤,不然必须利用新成立DirectDraw对象的QueryIntrface办法来得到IDirectDraw2或更高的COM接口.在2.2例中将介绍若何得到DirectX5以上版本供应的IDirectDraw2接口;
2.1.4 设置合作级别
合作方法可以掌握程序与系统其他利用程序之间的交互关系,典型的例子是:设置为全屏独占方法还是窗口普通方法.设置合作级别可以用DirectDraw对象的SetCooperativeLevel办法;
2.1.5 列举设备支持的各种显示方法,挑选并设置符合的显示分辩率、色彩深度和革新频率等.
利用DirectDraw的EnumDisplayModes办法可以列举设备支持的全部图形方法供用户挑选,在某些已肯定图形显示方法的利用程序中可以通过此列举功效来查抄系统设备能否支持指定的图形显示方法.
利用DirectDraw的SetDisplayMode办法可以设置所需求的图形显示方法.
以上是“在CB中举行DirectX编程(1)[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |