DirectX中文手册Word下载.docx

上传人:b****4 文档编号:16637870 上传时间:2022-11-25 格式:DOCX 页数:87 大小:102.49KB
下载 相关 举报
DirectX中文手册Word下载.docx_第1页
第1页 / 共87页
DirectX中文手册Word下载.docx_第2页
第2页 / 共87页
DirectX中文手册Word下载.docx_第3页
第3页 / 共87页
DirectX中文手册Word下载.docx_第4页
第4页 / 共87页
DirectX中文手册Word下载.docx_第5页
第5页 / 共87页
点击查看更多>>
下载资源
资源描述

DirectX中文手册Word下载.docx

《DirectX中文手册Word下载.docx》由会员分享,可在线阅读,更多相关《DirectX中文手册Word下载.docx(87页珍藏版)》请在冰豆网上搜索。

DirectX中文手册Word下载.docx

四、小结

第四节DirectDraw图形编程基础知识

一、像素和分辨率

二、RGB色彩

三、设备无关位图(DIB)

四、位深度(Bitdepth)

五、抖动处理(Dithering)

六、调色板(Palette)

七、GDI与DirectDraw

八、位块传送(Blit)

九、翻页(Pageflipping)

十、矩形(Rectangle)

十一、精灵动画(Spriteanimation)

十二、关键色(ColorKey)

十三、补丁(Patching)

十四、范围检查与碰撞检测

第二章DirectDraw核心(高级篇)

第一节、DirectDraw架构

一、DirectDraw结构概览

二、DirectDraw对象类型

三、硬件抽象层(HAL)

四、软件仿真层(HEL)

五、系统集成

第二节、控制级

第三节显示模式

一、关于显示模式

二、测定支持的显示模式

三、设置显示模式

四、恢复显示模式

五、ModeX和Mode13显示模式

六、对高分辨率和真彩色的支持

第四节DirectDraw对象

一、什么是DirectDraw对象?

二、IDirectDraw2接口的新特性?

三、单进程的多DirectDraw对象

四、使用CoCreateInstance创建DirectDraw对象

第五节页面

一、页面的基本概念

1)什么是页面

2)页面接口

3)宽度和宽距

4)关键色

5)像素格式

二、创建页面

1)创建主页面

2)创建离屏页面

3)创建复杂页面和换页链

4)创建超宽页面

三、换页

四、页面丢失

五、释放页面

六、更新页面属性

七、直接访问帧缓存

八、使用非本地视频RAM页面

九、色彩和格式转换

十、覆盖页面

1)覆盖页面概览

2)DDCAPS的重要成员和标志

3)源和目标矩形

4)边界和大小限制

5)最小和最大缩放系数

6)覆盖页面关键色

7)覆盖页面的定位

8)创建覆盖页面

9)覆盖页面的Z轴次序

10)覆盖页面的换页

十一、Blit到多窗口

第六节调色板

一、什么是调色板?

二、调色板的种类

三、对非主页面设置调色板

四、共享调色板

五、调色板动画

第七节裁减器

一、什么是“裁减器(Clipper)”对象

二、裁减清单(Cliplist)

三、共享DirectDrawClipper对象

四、独立的DirectDrawClipper对象

五、用CoCreateInstance创建DirectDrawClipper对象

六、对系统鼠标使用裁减器

七、对多窗口使用Clipper

第八节多显示器系统

一、在多显示器系统中列举显示设备

二、焦点窗口和设备窗口

三、设置焦点窗口和设备窗口

四、缺省设备窗口

五、多显示器系统中的显示设备与加速特性

第九节、高级DirectDraw主题

一、对Mode13的支持

1)关于Mode13

2)设置Mode13

3)Mode13与页面特性

4)使用Mode13模式

二、从DMA中获益

1)关于DMA设备支持

2)对DMA支持的检测

3)典型的DMA方案

4)利用DMA

三、在窗口模式下使用调色板

1)窗口模式的调色板入口类型

2)在窗口模式下创建调色板

3)在窗口模式下设置调色板入口

四、获得换页和Blit操作的状态

五、使用Blit进行单色填充

六、测定显示硬件的能力

七、在视频RAM中储存位图

八、TripleBuffering(三缓冲)

九、DirectDraw应用程序和窗口风格

十、将真彩色匹配到帧缓冲区的色彩空间

第一节什么是DirectX?

一、什么是DirectX

微软的DirectX软件开发工具包(SDK)提供了一套优秀的应用程序编程接口(APIs),这个编程接口可以提供给你开发高质量、实时的应用程序所需要的各种资源。

DirectX技术的出现将极大的有助于发展下一代多媒体应用程序和电脑游戏。

总的说来,使用DirectX的主要有两个好处:

∙为软件开发者提供硬件无关性;

∙为硬件开发提供策略。

1、为软件开发者提供硬件无关性

微软开发DirectX,其最主要的目的之一是促进在Windows操作系统上的游戏和多媒体应用程序的发展。

在DirectX出现以前,主要的游戏开发平台是MS-DOS,游戏开发者们为了使他们的程序能够适应各种各样的硬件设备而绞尽脑汁。

自从有了DirectX,游戏开发者们便可以获益于Windows平台的设备无关性,而又不失去直接访问硬件的特性。

DirectX主要的目的就是提供象MS-DOS一样简洁的访问硬件的能力,来实现并且提高基于MS-DOS平台应用软件的运行效果,并且为个人电脑硬件的革新扫除障碍。

另一方面,微软公司开发DirectX是为了在当前或今后的计算机操作系统上提供给基于Windows平台的应用程序以高表现力、实时的访问硬件的能力。

DirectX在硬件设备和应用程序之间提供了一套完整一致的接口,以减小在安装和配置时的复杂程度,并且可以最大限度的利用硬件的优秀特性。

通过使用DirectX所提供的接口,软件开发者可以尽情的利用硬件所可能带来的高性能,而不用烦恼于那些复杂而又多变的硬件执行细节。

一个高表现力的基于Windows平台的游戏将得益于以下几种技术:

∙专为提高图形运算及快速反应能力而设计的加速卡(Acceleratorcards)

∙即插即用以及其它Windows软硬件

∙内建于Windows的通信服务,包括DirectPlay

2、为硬件开发提供策略

DirectX的另外一个重要的目的是给硬件厂商提供开发策略,他们可以从高性能程序的开发者和独立的硬件供应商(independenthardwarevendorsIHVs)那里得到反馈。

所以,在DirectX程序员参考书中有时可能会提供那些还不存在的硬件加速设备的技术细节。

在很多时候,软件可以模拟这些特性,在另外一些情况下,软件根据硬件的指标判断出其特性,并且可以忽略那些硬件并不支持的性能。

已经和将要实现的显示设备的特性包括:

∙覆盖(Overlays),由于它的被支持,在图形设备接口中,窗口中的换页(pageflipping)将成为可用。

换页是用来在整个屏幕上显示画面的双缓冲(double-buffer)方案。

∙精灵引擎(Spriteengines),使精灵(不规则图形)覆盖更容易。

∙插补延展(Stretchingwithinterpolation),它可以更有效的保存显示内存,因为它可以使小幅画面延展到整个屏幕。

∙Alpha融合(Alphablending),它可以在硬件像素层(hardware-pixellevel)上混合颜色。

∙带有透视修正(perspective-correct)贴图的3D加速器,它允许你在3D表面上贴图。

比如,你可以在用3D软件制作的城堡的走廊里贴上砖块的位图来显示出透视效果。

∙为3D图象进行的位操作将Z方向考虑在内。

∙标准2兆显示内存,这在3D游戏中是最小需求。

∙压缩标准,这将允许你在显存中储存更多的信息。

这个标准不论是在软件还是硬件中执行都会相当快。

它将被用在贴图中并且包含透明压缩。

将要被包括的声音设备的新特性包括:

∙硬件及其外设可以提供空间环绕立体声效果。

∙声卡上内置音频内存。

∙音频-视频一体卡可共享其上的内存。

另外,视频回放将得益于今后的与DirectX相兼容硬件加速设备。

今后的DirectX版本中的一个特性是将支持硬件加速YUV视频解码。

二、DirectX的组件

DirectXSDK为基于Windows平台的应用程序提供了以下几个组件。

∙DirectDraw:

通过直接访问显示硬件来提供高级的图象处理能力。

∙DirectSound:

它提供了软硬件的低延迟声音混频(low_latencysoundmixing)和回放(Playback),硬件加速,以及直接访问音频设备的能力。

∙DirectPlay:

它明确的提供了通用环境连接能力(generalizedcommunicationcapabilities),来简化你应用程序之间的通讯服务。

∙Direct3D:

它为主流的桌上型计算机和Internet用户提供实时的、交互的3D技术。

∙DirectInput:

它简化你的应用程序访问鼠标、键盘和操纵杆设备的能力。

∙DirectSetup:

一套简单的API向你提供安装DirectX部件的功能。

∙AutoPlay:

它也是Win95操作系统的一个特性,当你在光驱内放上光盘,指定的应用程序会自动执行。

DirectDraw是DirectXSDK大家族中的一员,也是其中最主要的一个部件。

DirectDraw允许程序员直接的操作显存、硬件位图映射以及硬件覆盖和换页技术。

它在提供这些功能的同时,也使其与现在的基于MicrosoftWindows的应用程序和设备驱动程序相兼容。

DirectDraw是一个软件接口,它在提供直接访问显示设备的同时,与Windows图形设备接口(GDI)相兼容。

DirectDraw不是一个高层的图形程序编程接口,它为游戏和Windows子系统软件(例如:

3D图形包和数字视频编码)提供了一种与设备无关的途径,以获得访问特定的显示设备的某些高级特性的能力。

DirectDraw适用于种类众多的的显示设备,从简单的SVGA显示器到提供裁剪、缩放、和支持非RGB颜色格式的高级硬件实现设备。

设计这样的接口是为了让你的应用程序能够列举低层硬件的能力,并且对那些支持的硬件加速特性加以利用。

那些在硬件设备中不能实现的特性,DirectX将仿真出来。

DirectDraw提供了以下几个优点,这些好处在以前只有那些专为特定显示设备所写的软件才能利用。

∙支持双缓冲和换页图形

∙访问、控制显示卡的位图映射

∙支持3Dz-buffers(z缓存)

∙支持z方向(z-ordering)硬件辅助覆盖。

∙访问图形缩放硬件

∙仿真访问标准的和增强的显示设备内存空间

DirectDraw的任务是用与设备无关的途径来提供依赖于设备的访问显示内存的方法。

本质上,DirectDraw管理显示内存。

你的应用程序只需要懂得那些一般的关于硬件与设备有关的知识,比如RGB和YUV色彩格式和两条光栅线之间的pitch(宽距)。

在需要利用位转换或操作调色板寄存器时,你不需要为调用过程中的细节而烦恼。

使用DirectDraw,你可以方便的操作显示内存,充分的利用不同类型的显示设备的位转换和颜色压缩能力,而不需要依赖于某一个特定的硬件。

DirectDraw给运行于Windows95和WindowsNT4.0或更高版本的计算机提供了一个高性能的的游戏图象引擎。

四、为什么要使用DirectDraw

无庸置疑,人们之所以利用DirectDraw来开发各种游戏以及多媒体应用软件,是因为DirectDraw可以为他们的应用程序带来许多强大的功能提升。

DirectDraw可以充分评估视频硬件的能力,只要可能,它就会对其某一特性加以利用。

例如,如果你的显卡支持硬件Blit,DirectDraw就会将位图映射这一操作分派给显卡来完成,极大的提升运行速度。

此外,当某硬件不支持某项特性时,DirectDraw还提供了硬件仿真层(HEL)以完成这项操作。

DirectDraw的硬件抽象层(HAL)提供了一个统一的接口,通过它,开发者可以直接的操作显示存储器和视频存储器,从系统硬件中获取最大的表现能力。

DirectDraw运行于Windows95操作系统之上,从系统所提供的32位内存寻址和平面内存模型中获益。

DirectDraw将视频和系统存储器视为整块的空间,而不是碎片的集合。

如果你曾使用过区段偏移寻址,你将很快就喜爱上这种“平面”内存模型。

对于全屏模式的应用程序,DirectDraw使得多后台缓存的换页操作变得极为容易。

∙支持窗口和全屏模式应用程序的裁减。

∙支持3-Dz缓存。

∙支持带z轴方向的硬件辅助覆盖。

∙可访问图象缩放硬件。

∙可同时访问标准的和增强的显示设备内存区。

∙其它的特性,包括动态改变调色板、独占访问硬件、和分辨率切换等等。

合理和有效的利用DirectDraw的这些特性将使开发者很容易就能够写出比基于标准的WindowsGDI应用程序,甚至MS-DOS应用程序还要优秀的作品。

五、DirectX5.0的新特性

DirectX5.0版本比3.0版拥有更多的创新和新特性(注意:

并不存在4.0版)。

尽管这样,你用以前版本写的DirectX应用程序同样可以不加修改的运行于DirectX5.0环境中。

以下将介绍的是DirectX5.0中DirectDraw接口的新特性。

首先,DirectDraw支持Windows98和WindowsNT5.0的多显示器系统。

例如,在多显示器环境下,同一台电脑使用两套不同的显示设备和显示器,用户可以将不同的画面显示在两个显示屏幕上,甚至将一个窗口从一个显示器拖拽到另一个显示器上。

DirectDraw5.0支持这样一个系统,允许应用程序在这样的环境中直接的访问和操纵硬件加速特性。

其次,DirectDraw已经使视频端口(Video-port)具有新的性能,它允许应用程序直接控制数据流从一个硬件视频端口流向一个位于显存中的DirectDraw页面上。

这样,使得视频图象的输入和输出对DirectDraw来说都变得极为便利和快速。

除此之外,DirectDraw的HEL(硬件仿真层)现在可以充分利用PentiumMMX处理器所带来的多媒体性能的提升。

当你第一次创建页面的时候,DirectDraw会测试你的电脑芯片是否支持MMX。

而在一台非PentiumMMX级别电脑上,这个测试会在调试程序的时候给出一个良性的异常信息,而这个异常并不会影响到你的应用程序执行的稳定性。

DirectDraw接口现在还支持离屏页面的宽度大于主页面的宽度。

你可以创建这些页面而不用顾及它的大小,而在以前的版本中,你经常会为了不使页面宽度大于主页面而将其分割开来。

DirectDraw接口现在已经能够支持高级图形端口(AGP)构架。

在装备了AGP显卡的系统中,DirectDraw程序开发者将从AGP显卡的大容量和高传输速率中获益。

六、部件对象模型(COM)

DirectX是基于COM的一套软件编程接口。

部件对象模型(ComponentObjectModel,COM)是OLE的基础。

COM为OLE提供了编程模型和二进制标准。

COM定义并实现了软部件(如应用程序、数据对象、控件及服务)机制,并把它们统称为“对象”。

每个软部件对象由数据以及访问数据的函数组成,访问软部件对象数据的函数的集合称为“接口”。

从这里可以看出,COM的设计与C++类非常相似,即一个软部件对象具有一个内部数据结构和一组外部接口函数,允许通过接口函数对数据进行访问。

因此Microsoft公司把根据COM执行的对象统称为Windows对象。

但Windows对象与C++中的对象有明显的差别,Windows对象中没有公共数据,也没有成员函数,因此不能直接访问数据,也就是说数据是全封装的。

对象的提供者或服务器必须指明一个或多个接口的定义,每个接口都是相互关联的一组函数,执行对象的一个特性。

每个对象的一个用户(或称为“客户”)必须拥有一个接口指针才能访问对象。

当客户有了这个指针后,就可以使用这个对象而无需知道对象的含义,即使客户运行在不同的进程、不同的机器、不同的操作系统、由不同的软件开发而使用不同的语言,或者版本不同。

DirectXSDK接口被创建在COM编程层次表中很基础的一层。

每一个代表设备的对象的接口,比如IDirectDraw、IDirectSound、和IDirectPlay,是直接从IUnknownOLE接口中派生下来的。

这些基本对象的创建被操作于在该对象的动态连接库中,要比用Win32中专门用来创建COM对象的CoCreateInstance函数要好得多。

特别的是,DirectXSDK对象模型为每一个设备提供一个主要的对象。

其它的设备对象是由这个主要对象派生下来的。

例如,DirectDraw对象代表显示设备。

你可以用它来创建代表显存的主页面(DirectDrawSurface)对象,和代表硬件调色板的调色板(DirectDrawPalette)对象;

相似的,DirectSound对象代表声卡,并且创建DirectSoundbuffer对象来代表声卡上的声音数据。

本章所讲的内容都是关于DirectX的较为抽象的概念。

其实,在你真正开始自己编制程序,进入这一领域之前,有些概念现在还是很难接受的。

但是,当你在有了一定的实践经验,在回过头看这些文字,你会发现它们其实还是很好理解的。

实践出真知,掌握DirectDraw知识的最佳途径只有一个,那就是“编程”。

在下一章里,我们将正式开始DirectDraw编程的学习。

通过这一章的学习,你应该对以下内容有所了解:

∙DirectX是做什么用的?

∙DirectX包括哪些组件,以及它们各自的作用。

∙DirectDraw的好处是什么,我们为什么要使用它。

∙COM的一般解释。

为了能够使用MSVC++5.0进行DirectX编程,必须拥有一套DirectX的SDK(软件开发工具包),它包括了编译DirectX应用程序所需要的编译库文件(*.lib)、头文件(*.h)、示例,还有帮助。

MSVC++5.0自己带有3.0版的DirectXSDK,所以只要按照缺省的安装,你的VC就已经可以编制基于DirectX的应用程序了。

不过,缺省的安装并不会把DirectX的在线帮助包括在内,没有这个功能强大的在线帮助,你常常会陷入孤立无援的境地。

这一章将教你如何安装一个全功能的MSVC++5.0DirectX编译环境。

如果你有DirectX5.0版或更高版的SDK,本章还将教你如何更新旧版的DirectX编译环境。

且慢,如果你辛辛苦苦编了一个漂亮的动画程序,兴高采烈的拷给你的朋友,第二天他们却告诉你根本就运行不了,那将是何等的尴尬与无奈。

原来,要让DirectX应用程序能在脱离VC的环境下执行,你的电脑还必须安装有DirectX运行库(Runtimelibrary),这也就是我们常说的DirectX引擎(Engine)或驱动程序(DeviceDriver)。

好在Microsoft为了推行其DirectX标准,将这套驱动程序库免费奉送,你可以从Microsoft公司的Web站点的DirectX页上下载,当然,这显然是个很愚蠢的方法,因为,在很多高速图形游戏如NeedForSpeed(极品飞车)、MotorRacer(摩托英豪)、Diablo(暗黑破坏神)、RedAlert(红色警戒)等中,都有DirectX驱动程序提供。

安装驱动程序只用运行Setup文件就可以了,它默认的包括了在Windows注册表中注册DirectX部件,并且将动态连接库文件(DLL)复制到Windows系统目录中。

只不过,这些驱动程序包只包括了DirectX引擎,并无编译DirectX程序所需要的库文件和头文件。

二、安装VisualC++5.0

1、电脑配置

本教程所有的DirectX程序都是在VisualC++5.0环境中编译完成的,所以,建议用户安装VisualC++的5.0版本,请不要使用以前的VC版本,虽然程序可以正常运行,但也会发生不可预知的错误。

而且,VC5.0以其强大的功能和基于超文本(HTML)的在线帮助,定会使你事半功倍,大大提高编程效率。

安装VisualC++5.0的DirectX所需要的软、硬件最低配置:

Windows95或WindowsNT3.0;

IBMPC极其兼容机,最好具有80486以上的微处理器;

8MB内存;

最小安装需要140MB的可用硬盘空间,典型安装需要200MB的可用硬盘空间,CD-ROM安装需要50MB的可用硬盘空间,完整安装需要300MB的可用硬盘空间;

高密软盘驱动器;

VGA显示器;

CD-ROM驱动器。

以上是Microsoft所给出的最低配置,但在实际情况下,如果你的电脑还是一台486、8MB内存,甚至奔腾100、16MB内存的配置,你完全没有理由犹豫是继续使用这台老牛拉破车的电脑呢,还是该为自己重新配一台(如果你的钱包够鼓的话)。

以下是为了更加突出的体现DirectX的硬件加速特性,建议读者至少有以下配置:

Windows95、Windows98或WindowsNT4.0;

奔腾166、AMDK6-166或Cyrix166以上的微处理器,PII或AMDK6-3D尤佳;

至少16MB内存;

SVGA显示器,至少支持800*600*16K,刷新率75HZ以上;

PCI或AGP显示卡,至少2MB显存;

16位声卡;

至少4速CD-ROM驱动器;

拥有一块VOODOO2或G200图形加速卡(鉴于其不菲的价格,这并不是必选配件)。

2、开始安装

运行VisualC++5.0的安装光盘上的Setup.exe文件。

弹出“Welcome”对话框,单击“Continue”按钮,安装程序显示“Registration”对话框,要求用户输入姓名(User)、公司名称(Organization)和10位的CD号。

正确输入注册信息后单击“Continue”按钮,从弹出的画面中单击“MicrosoftVisualC++5.0”,再从弹出的画面单击“InstallVisualC++5.0EnterpriseEdition”。

稍后弹出“Welcome”对话框,单击“Next”按钮,安装程序显示软件授权协议。

单击“Yes”按钮,安装程序显示“Installat

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1