⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 whatisdx.htm

📁 DirectX 编程初级教程中文版。只要有C++基础和一点三维知识即可。
💻 HTM
📖 第 1 页 / 共 2 页
字号:
      face="Arial">DirectX</font>部件的功能。 </li>
    <b>
    <li><font face="Arial">AutoPlay</b> </font>:它也是<font face="Arial">Win95</font>操作系统的一个特性,当你在光驱内放上光盘,指定的应用程序会自动执行。</li>
  </ul>
</blockquote>

<hr>

<blockquote>
  <b><p><font face="Arial">3</font>、<a name="关于DirectDraw">关于<font face="Arial">DirectDraw</font></a></b></p>
  <p align="right"><font color="#FF0000"><b><a href="#目录">回到目录</a></b></font></p>
  <p ALIGN="JUSTIFY"><font face="Arial">DirectDraw</font>是<font face="Arial">DirectX SDK</font>大家族中的一员,也是其中最主要的一个部件。<font
  face="Arial">DirectDraw</font>允许程序员直接的操作显存、硬件位图映射以及硬件覆盖和换页技术。它在提供这些功能的同时,也使其与现在的基于<font
  face="Arial">Microsoft Windows</font>的应用程序和设备驱动程序相兼容。 </p>
  <p ALIGN="JUSTIFY"><font face="Arial">DirectDraw</font>是一个软件接口,它在提供直接访问显示设备的同时,与<font
  face="Arial">Windows</font>图形设备接口(<font face="Arial">GDI</font>)相兼容。<font
  face="Arial">DirectDraw</font>不是一个高层的图形程序编程接口,它为游戏和<font
  face="Arial">Windows</font>子系统软件(例如:<font face="Arial">3D</font>图形包和数字视频编码)提供了一种与设备无关的途径,以获得访问特定的显示设备的某些高级特性的能力。</p>
  <p ALIGN="JUSTIFY"><font face="Arial">DirectDraw</font>适用于种类众多的的显示设备,从简单的<font
  face="Arial">SVGA</font>显示器到提供裁剪、缩放、和支持非<font face="Arial">RGB</font>颜色格式的高级硬件实现设备。设计这样的接口是为了让你的应用程序能够列举低层硬件的能力,并且对那些支持的硬件加速特性加以利用。那些在硬件设备中不能实现的特性,<font
  face="Arial">DirectX</font>将仿真出来。 </p>
  <p ALIGN="JUSTIFY"><font face="Arial">DirectDraw</font>提供了以下几个优点,这些好处在以前只有那些专为特定显示设备所写的软件才能利用。 
  </p>
  <ul>
    <li>支持双缓冲和换页图形 </li>
    <li>访问、控制显示卡的位图映射 </li>
    <li>支持<font face="Arial">3D z-buffers </font>(<font face="Arial">z</font>缓存) </li>
    <li>支持<font face="Arial">z</font>方向(<font face="Arial">z-ordering</font>)硬件辅助覆盖。 
    </li>
    <li>访问图形缩放硬件 </li>
    <li>仿真访问标准的和增强的显示设备内存空间 </li>
  </ul>
  <p ALIGN="JUSTIFY"><font face="Arial">DirectDraw</font>的任务是用与设备无关的途径来提供依赖于设备的访问显示内存的方法。本质上,<font
  face="Arial">DirectDraw</font>管理显示内存。你的应用程序只需要懂得那些一般的关于硬件与设备有关的知识,比如<font
  face="Arial">RGB</font>和<font face="Arial">YUV</font>色彩格式和两条光栅线之间的<font
  face="Arial">pitch</font>(宽距) 
  。在需要利用位转换或操作调色板寄存器时,你不需要为调用过程中的细节而烦恼。使用<font
  face="Arial">DirectDraw</font>,你可以方便的操作显示内存,充分的利用不同类型的显示设备的位转换和颜色压缩能力,而不需要依赖于某一个特定的硬件。 
  </p>
  <p ALIGN="JUSTIFY"><font face="Arial">DirectDraw</font>给运行于<font face="Arial">Windows 
  95</font>和<font face="Arial">Windows NT 4.0</font>或更高版本的计算机提供了一个高性能的的游戏图象引擎。 
  </p>
</blockquote>

<hr>

<blockquote>
  <b><p><font face="Arial">4</font>、<a name="为什么使用DirectDraw">为什么要使用<font
  face="Arial">DirectDraw</a>?</font></p>
  <p align="right"><font color="#FF0000"><a href="#目录">回到目录</a></font></p>
  </b><p ALIGN="JUSTIFY">无庸置疑,人们之所以利用<font face="Arial">DirectDraw</font>来开发各种游戏以及多媒体应用软件,是因为<font
  face="Arial">DirectDraw</font>可以为他们的应用程序带来许多强大的功能提升。</p>
  <ul>
    <li><font face="Arial">DirectDraw</font>可以充分评估视频硬件的能力,只要可能,它就会对其某一特性加以利用。例如,如果你的显卡支持硬件<font
      face="Arial">Blit</font>,<font face="Arial">DirectDraw</font>就会将位图映射这一操作分派给显卡来完成,极大的提升运行速度。此外,当某硬件不支持某项特性时,<font
      face="Arial">DirectDraw</font>还提供了硬件仿真层(<font face="Arial">HEL</font>)以完成这项操作。</li>
    <li><font face="Arial">DirectDraw</font>的硬件抽象层(<font face="Arial">HAL</font>)提供了一个统一的接口,通过它,开发者可以直接的操作显示存储器和视频存储器,从系统硬件中获取最大的表现能力。</li>
    <li><font face="Arial">DirectDraw</font>运行于<font face="Arial">Windows95</font>操作系统之上,从系统所提供的<font
      face="Arial">32</font>位内存寻址和平面内存模型中获益。<font face="Arial">DirectDraw</font>将视频和系统存储器视为整块的空间,而不是碎片的集合。如果你曾使用过区段偏移寻址,你将很快就喜爱上这种“平面”内存模型。</li>
    <li>对于全屏模式的应用程序,<font face="Arial">DirectDraw</font>使得多后台缓存的换页操作变得极为容易。</li>
    <li>支持窗口和全屏模式应用程序的裁减。</li>
    <li>支持<font face="Arial">3-D z</font>缓存。</li>
    <li>支持带<font face="Arial">z</font>轴方向的硬件辅助覆盖。</li>
    <li>可访问图象缩放硬件。</li>
    <li>可同时访问标准的和增强的显示设备内存区。</li>
    <li>其它的特性,包括动态改变调色板、独占访问硬件、和分辨率切换等等。</li>
  </ul>
  <p ALIGN="JUSTIFY">合理和有效的利用<font face="Arial">DirectDraw</font>的这些特性将使开发者很容易就能够写出比基于标准的<font
  face="Arial">Windows GDI</font>应用程序,甚至<font face="Arial">MS-DOS</font>应用程序还要优秀的作品。</p>
</blockquote>

<hr>

<blockquote>
  <b><p><font face="Arial">5</font>、<a name="DirectX 5.0的新特性"><font face="Arial">DirectX 
  5.0</font>的新特性</a></p>
  </b><p align="right"><font color="#FF0000"><b><a href="#目录">回到目录</a></b></font></p>
  <p ALIGN="JUSTIFY"><font face="Arial">DirectX5.0</font>版本比<font face="Arial">3.0</font>版拥有更多的创新和新特性(注意:并不存在<font
  face="Arial">4.0</font>版)。尽管这样,你用以前版本写的<font face="Arial">DirectX</font>应用程序同样可以不加修改的运行于<font
  face="Arial">DirectX5.0</font>环境中。以下将介绍的是<font face="Arial">DirectX 
  5.0</font>中<font face="Arial">DirectDraw</font>接口的新特性。</p>
  <ul>
    <li><p ALIGN="JUSTIFY">首先,<font face="Arial">DirectDraw</font>支持<font face="Arial">Windows98</font>和<font
      face="Arial">Windows NT 5.0</font>的多显示器系统。例如,在多显示器环境下,同一台电脑使用两套不同的显示设备和显示器,用户可以将不同的画面显示在两个显示屏幕上,甚至将一个窗口从一个显示器拖拽到另一个显示器上。<font
      face="Arial">DirectDraw5.0</font>支持这样一个系统,允许应用程序在这样的环境中直接的访问和操纵硬件加速特性。</p>
    </li>
    <li><p ALIGN="JUSTIFY">其次,<font face="Arial">DirectDraw</font>已经使视频端口(<font
      face="Arial">Video-port</font>)具有新的性能,它允许应用程序直接控制数据流从一个硬件视频端口流向一个位于显存中的<font
      face="Arial">DirectDraw</font>页面上。这样,使得视频图象的输入和输出对<font
      face="Arial">DirectDraw</font>来说都变得极为便利和快速。</p>
    </li>
    <li><p ALIGN="JUSTIFY">除此之外,<font face="Arial">DirectDraw</font>的<font
      face="Arial">HEL</font>(硬件仿真层)现在可以充分利用<font face="Arial">Pentium 
      MMX</font>处理器所带来的多媒体性能的提升。当你第一次创建页面的时候,<font
      face="Arial">DirectDraw</font>会测试你的电脑芯片是否支持<font face="Arial">MMX</font>。而在一台非<font
      face="Arial">Pentium MMX</font>级别电脑上,这个测试会在调试程序的时候给出一个良性的异常信息,而这个异常并不会影响到你的应用程序执行的稳定性。</p>
    </li>
    <li><p ALIGN="JUSTIFY"><font face="Arial">DirectDraw</font>接口现在还支持离屏页面的宽度大于主页面的宽度。你可以创建这些页面而不用顾及它的大小,而在以前的版本中,你经常会为了不使页面宽度大于主页面而将其分割开来。</p>
    </li>
    <li><p ALIGN="JUSTIFY"><font face="Arial">DirectDraw</font>接口现在已经能够支持高级图形端口(<font
      face="Arial">AGP</font>)构架。在装备了<font face="Arial">AGP</font>显卡的系统中,<font
      face="Arial">DirectDraw</font>程序开发者将从<font face="Arial">AGP</font>显卡的大容量和高传输速率中获益。</p>
    </li>
  </ul>
</blockquote>

<hr>

<blockquote>
  <b><p><font face="Arial">6</font>、<a name="部件对象模型">部件对象模型</a>(<font
  face="Arial">COM</font>)</p>
  </b><p align="right"><font color="#FF0000"><b><a href="#目录">回到目录</a></b></font></p>
  <p ALIGN="JUSTIFY"><font face="Arial">DirectX</font>是基于<font face="Arial">COM</font>的一套软件编程接口。</p>
  <p ALIGN="JUSTIFY">部件对象模型(<font face="Arial">Component Object Model, COM</font>)是<font
  face="Arial">OLE </font>的基础。<font face="Arial">COM </font>为<font face="Arial">OLE</font>提供了编程模型和二进制标准。<font
  face="Arial">COM</font>定义并实现了软部件(如应用程序、数据对象、控件及服务)机制,并把它们统称为“对象”。每个软部件对象由数据以及访问数据的函数组成,访问软部件对象数据的函数的集合称为“接口”。</p>
  <p ALIGN="JUSTIFY">从这里可以看出,<font face="Arial">COM </font>的设计与<font
  face="Arial">C++</font>类非常相似,即一个软部件对象具有一个内部数据结构和一组外部接口函数,允许通过接口函数对数据进行访问。因此<font
  face="Arial">Microsoft</font>公司把根据<font face="Arial">COM</font>执行的对象统称为<font
  face="Arial">Windows</font>对象。但<font face="Arial">Windows</font>对象与<font
  face="Arial">C++</font>中的对象有明显的差别,<font face="Arial">Windows</font>对象中没有公共数据,也没有成员函数,因此不能直接访问数据,也就是说数据是全封装的。</p>
  <p ALIGN="JUSTIFY">对象的提供者或服务器必须指明一个或多个接口的定义,每个接口都是相互关联的一组函数,执行对象的一个特性。每个对象的一个用户(或称为“客户”)必须拥有一个接口指针才能访问对象。当客户有了这个指针后,就可以使用这个对象而无需知道对象的含义,即使客户运行在不同的进程、不同的机器、不同的操作系统、由不同的软件开发而使用不同的语言,或者版本不同。</p>
  <p ALIGN="JUSTIFY"><font face="Arial">DirectX SDK</font>接口被创建在<font
  face="Arial">COM</font>编程层次表中很基础的一层。每一个代表设备的对象的接口,比如<font
  face="Arial">IDirectDraw</font>、<font face="Arial">IDirectSound</font>、和<font
  face="Arial">IDirectPlay</font>,是直接从<font face="Arial">IUnknown OLE</font>接口中派生下来的。这些基本对象的创建被操作于在该对象的动态连接库中,要比用<font
  face="Arial">Win32</font>中专门用来创建<font face="Arial">COM</font>对象的<font
  face="Arial">CoCreateInstance</font>函数要好得多。 </p>
  <p ALIGN="JUSTIFY">特别的是,<font face="Arial">DirectX SDK</font>对象模型为每一个设备提供一个主要的对象。其它的设备对象是由这个主要对象派生下来的。例如,<font
  face="Arial">DirectDraw</font>对象代表显示设备。你可以用它来创建代表显存的主页面(<font
  face="Arial">DirectDrawSurface</font>)对象,和代表硬件调色板的调色板(<font
  face="Arial">DirectDrawPalette</font>)对象;相似的,<font face="Arial">DirectSound</font>对象代表声卡,并且创建<font
  face="Arial">DirectSoundbuffer</font>对象来代表声卡上的声音数据。</p>
</blockquote>

<hr>

<blockquote>
  <b><p><font face="Arial">7</font>、<a name="自我检测">自我检测</a></b></p>
  <p align="right"><font color="#FF0000"><b><a href="#目录">回到目录</a></b></font></p>
  <p ALIGN="JUSTIFY">本章所讲的内容都是关于<font face="Arial">DirectX</font>的较为抽象的概念。其实,在你真正开始自己编制程序,进入这一领域之前,有些概念现在还是很难接受的。但是,当你在有了一定的实践经验,在回过头看这些文字,你会发现它们其实还是很好理解的。实践出真知,掌握<font
  face="Arial">DirectDraw</font>知识的最佳途径只有一个,那就是“编程”。在下一章里,我们将正式开始<font
  face="Arial">DirectDraw</font>编程的学习。</p>
  <p ALIGN="JUSTIFY">通过这一章的学习,你应该对以下内容有所了解:</p>
  <ul>
    <li><font face="Arial">DirectX</font>是做什么用的?</li>
    <li><font face="Arial">DirectX</font>包括哪些组件,以及它们各自的作用。</li>
    <li><font face="Arial">DirectDraw</font>的好处是什么,我们为什么要使用它。</li>
    <li><font face="Arial">COM</font>的一般解释。</li>
  </ul>
</blockquote>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -