📄 jiagou.htm
字号:
FACE="Arial" SIZE="3">DirectDrawCreate</font><font FACE="宋体" SIZE="3">函数可以创建一个</font><font
FACE="Arial" SIZE="3">DirectDraw</font><font FACE="宋体" SIZE="3">对象。</font><font
FACE="Arial" SIZE="3">DirectDraw</font><font FACE="宋体" SIZE="3">对象通过</font><font
FACE="Arial" SIZE="3">IDirectDraw</font><font FACE="宋体" SIZE="3">和</font><font
FACE="Arial" SIZE="3">IDirectDraw2</font><font FACE="宋体" SIZE="3">接口为开发者提供其函数性。要得到更多的资料,请参阅“</font><font
FACE="Arial" SIZE="3">DirectDraw</font><font FACE="宋体" SIZE="3">对象”。</font></td>
</tr>
<tr>
<td WIDTH="31%" VALIGN="TOP"><font FACE="Arial" SIZE="3"><b><p ALIGN="JUSTIFY">DirectDrawSurface</b></font></td>
<td WIDTH="69%" VALIGN="TOP"><font FACE="Arial" SIZE="3"><p ALIGN="JUSTIFY">DirectDrawSurface</font><font
FACE="宋体" SIZE="3">对象,通常简称为“页面(</font><font FACE="Arial"
SIZE="3">Surface</font><font FACE="宋体" SIZE="3">)”,代表了内存中的一块区域,它存储了可以显示在显示器上的图象数据。通过调用</font><font
FACE="Arial" SIZE="3">DirectDraw</font><font FACE="宋体" SIZE="3">对象的</font><font
FACE="Arial" SIZE="3">IDirectDraw2::CreateSurface</font><font FACE="宋体" SIZE="3">函数可以创建一个与该</font><font
FACE="Arial" SIZE="3">DirectDraw</font><font FACE="宋体" SIZE="3">对象相关联的页面。</font><font
FACE="Arial" SIZE="3">DirectDrawSurface</font><font FACE="宋体" SIZE="3">对象通过</font><font
FACE="Arial" SIZE="3">IDirectDrawSurface</font><font FACE="宋体" SIZE="3">、</font><font
FACE="Arial" SIZE="3">IdirectDrawSurface2</font><font FACE="宋体" SIZE="3">和</font><font
FACE="Arial" SIZE="3">IDirectDrawSurface3</font><font FACE="宋体" SIZE="3">接口为开发者提供其函数性。要得到更多的资料,请参阅“页面”。</font></td>
</tr>
<tr>
<td WIDTH="31%" VALIGN="TOP"><font FACE="Arial" SIZE="3"><b><p ALIGN="JUSTIFY">DirectDrawPalette</b></font></td>
<td WIDTH="69%" VALIGN="TOP"><font FACE="Arial" SIZE="3"><p ALIGN="JUSTIFY">DirectDrawPalette</font><font
FACE="宋体" SIZE="3">对象,通常简称为“调色板(</font><font FACE="Arial"
SIZE="3">Palette</font><font FACE="宋体" SIZE="3">)”,代表了一个可以为页面所使用的</font><font
FACE="Arial" SIZE="3">16</font><font FACE="宋体" SIZE="3">或</font><font FACE="Arial"
SIZE="3">256</font><font FACE="宋体" SIZE="3">色的调色板。它包含了一组</font><font
FACE="Arial" SIZE="3">RGB</font><font FACE="宋体" SIZE="3">值的索引,用来描述页面上的像素所使用的颜色值。对于像素位深度大于</font><font
FACE="Arial" SIZE="3">8</font><font FACE="宋体" SIZE="3">的页面,不需要使用调色板。通过调用</font><font
FACE="Arial" SIZE="3">IDirectDraw2::CreatePalette</font><font FACE="宋体" SIZE="3">函数,可以创建一个</font><font
FACE="Arial" SIZE="3">DirectDrawPalette</font><font FACE="宋体" SIZE="3">对象。</font><font
FACE="Arial" SIZE="3">DirectDrawPalette</font><font FACE="宋体" SIZE="3">对象通过</font><font
FACE="Arial" SIZE="3">IDirectDrawPalette</font><font FACE="宋体" SIZE="3">接口为开发者提供其函数性。要得到更多的资料,请参阅“调色板”。</font></td>
</tr>
<tr>
<td WIDTH="31%" VALIGN="TOP"><font FACE="Arial" SIZE="3"><b><p ALIGN="JUSTIFY">DirectDrawClipper</b></font></td>
<td WIDTH="69%" VALIGN="TOP"><font FACE="Arial" SIZE="3"><p ALIGN="JUSTIFY">DirectDrawClipper</font><font
FACE="宋体" SIZE="3">对象,通常简称为“裁剪器(</font><font FACE="Arial"
SIZE="3">Clipper</font><font FACE="宋体" SIZE="3">)”,帮助开发者使</font><font
FACE="Arial" SIZE="3">Blit</font><font FACE="宋体" SIZE="3">(位块传送)操作限定在页面的某一区域内,或不超出页面的边界范围。通过调用</font><font
FACE="Arial" SIZE="3">IDirectDraw2::CreateClipper</font><font FACE="宋体" SIZE="3">函数可以创建一个</font><font
FACE="Arial" SIZE="3">DirectDrawClipper</font><font FACE="宋体" SIZE="3">对象。</font><font
FACE="Arial" SIZE="3">DirectDrawClipper</font><font FACE="宋体" SIZE="3">对象通过</font><font
FACE="Arial" SIZE="3">IDirectDrawClipper</font><font FACE="宋体" SIZE="3">接口为开发者提供其函数性。要得到更多的资料,请参阅“裁剪器”。</font></td>
</tr>
<tr>
<td WIDTH="31%" VALIGN="TOP"><font FACE="Arial" SIZE="3"><b><p ALIGN="JUSTIFY">DirectDrawVideoPort</b></font></td>
<td WIDTH="69%" VALIGN="TOP"><font FACE="Arial" SIZE="3"><p ALIGN="JUSTIFY">DirectDrawVideoPort</font><font
FACE="宋体" SIZE="3">对象代表了当前某些系统上的视频端口(</font><font
FACE="Arial" SIZE="3">Vedio port</font><font FACE="宋体" SIZE="3">)硬件。这个硬件允许直接的访问帧缓存,而不需要通过</font><font
FACE="Arial" SIZE="3">CPU</font><font FACE="宋体" SIZE="3">或使用</font><font
FACE="Arial" SIZE="3">PCI</font><font FACE="宋体" SIZE="3">总线。通过对</font><font
FACE="Arial" SIZE="3">DirectDRaw</font><font FACE="宋体" SIZE="3">对象调用</font><font
FACE="Arial" SIZE="3">QueryInterface</font><font FACE="宋体" SIZE="3">函数(指定</font><font
FACE="Arial" SIZE="3">IID_IDDVideoPortContainer</font><font FACE="宋体" SIZE="3">标志符),可以创建一个</font><font
FACE="Arial" SIZE="3">DirectDrawVideoPort</font><font FACE="宋体" SIZE="3">对象。</font><font
FACE="Arial" SIZE="3">DirectDrawVideoPort</font><font FACE="宋体" SIZE="3">对象通过</font><font
FACE="Arial" SIZE="3">IDDVideoPortContainer</font><font FACE="宋体" SIZE="3">和</font><font
FACE="Arial" SIZE="3">IDirectDrawVideoPort</font><font FACE="宋体" SIZE="3">接口为开发者提供其函数性。要得到更多的资料,请参阅“视频端口”。</font></td>
</tr>
</table>
<font FACE="宋体" SIZE="3"><p ALIGN="JUSTIFY"> </p>
</font><b><font FACE="黑体" SIZE="5">
<li>硬件抽象层(</font><font FACE="Arial" SIZE="5">HAL</font><font FACE="黑体"
SIZE="5">:</font><font FACE="Arial" SIZE="5">Hardware Abstraction Layer</font><font
FACE="黑体" SIZE="5">)</li>
</font></b><font FACE="Arial" SIZE="3"><p ALIGN="JUSTIFY">DirectDraw</font><font
FACE="宋体" SIZE="3">通过硬件抽象层(以后简称为:</font><font FACE="Arial"
SIZE="3">HAL</font><font FACE="宋体" SIZE="3">)来提供设备无关的特性。</font><font
FACE="Arial" SIZE="3">HAL</font><font FACE="宋体" SIZE="3">是由设备生产商提供的指定设备的接口,</font><font
FACE="Arial" SIZE="3">DirectDraw</font><font FACE="宋体" SIZE="3">用来直接操作显示硬件。应用程序从来不会直接与</font><font
FACE="Arial" SIZE="3">HAL</font><font FACE="宋体" SIZE="3">打交道,相反,而是与</font><font
FACE="Arial" SIZE="3">HAL</font><font FACE="宋体" SIZE="3">所提供的下属函数打交道。</p>
</font><font FACE="Arial" SIZE="3"><p ALIGN="JUSTIFY">DirectDraw HAL</font><font
FACE="宋体" SIZE="3">可以以</font><font FACE="Arial" SIZE="3">16</font><font
FACE="宋体" SIZE="3">位、</font><font FACE="Arial" SIZE="3">32</font><font
FACE="宋体" SIZE="3">位或在</font><font FACE="Arial" SIZE="3">Win95</font><font
FACE="宋体" SIZE="3">中两者兼而有之的形式执行。</font><font FACE="Arial"
SIZE="3">HAL</font><font FACE="宋体" SIZE="3">在</font><font FACE="Arial" SIZE="3">WinNT</font><font
FACE="宋体" SIZE="3">中通常以</font><font FACE="Arial" SIZE="3">32</font><font
FACE="宋体" SIZE="3">位方式执行。</font><font FACE="Arial" SIZE="3">HAL</font><font
FACE="宋体" SIZE="3">可以是显示设备驱动程序的一部分,或独立的</font><font
FACE="Arial" SIZE="3">DLL</font><font FACE="宋体" SIZE="3">,通过驱动程序编写者定义的一个私有接口联系显示驱动。</p>
</font><font FACE="Arial" SIZE="3"><p ALIGN="JUSTIFY">DirectDraw HAL</font><font
FACE="宋体" SIZE="3">是由芯片制造商、板卡生产商或原始设备制造商(</font><font
FACE="Arial" SIZE="3">OEM</font><font FACE="宋体" SIZE="3">)实现的。</font><font
FACE="Arial" SIZE="3">HAL</font><font FACE="宋体" SIZE="3">只执行硬件有关代码而不进行仿真。如果硬件不能实现某个功能,</font><font
FACE="Arial" SIZE="3">HAL</font><font FACE="宋体" SIZE="3">不会将其反映在自己的硬件特性中。</p>
</font><b><font FACE="黑体" SIZE="5">
<li>硬件仿真层(</font><font FACE="Arial" SIZE="5">HEL</font><font FACE="黑体"
SIZE="5">:</font><font FACE="Arial" SIZE="5">Hardware Emulation Layer</font><font
FACE="黑体" SIZE="5">)</li>
</font></b><font FACE="宋体" SIZE="3"><p ALIGN="JUSTIFY">当硬件抽象层(</font><font
FACE="Arial" SIZE="3">HAL</font><font FACE="宋体" SIZE="3">)不支持某种特性时,</font><font
FACE="Arial" SIZE="3">DirectDraw</font><font FACE="宋体" SIZE="3">会试图进行软件仿真。仿真的函数是由硬件仿真层(</font><font
FACE="Arial" SIZE="3">HEL</font><font FACE="宋体" SIZE="3">)提供的。</font><font
FACE="Arial" SIZE="3">HEL</font><font FACE="宋体" SIZE="3">与</font><font FACE="Arial"
SIZE="3">HAL</font><font FACE="宋体" SIZE="3">一样,代表了</font><font
FACE="Arial" SIZE="3">DirectDraw</font><font FACE="宋体" SIZE="3">的特性,并且应用程序从来不直接与</font><font
FACE="Arial" SIZE="3">HEL</font><font FACE="宋体" SIZE="3">一起工作。结果是,</font><font
FACE="Arial" SIZE="3">DirectDraw</font><font FACE="宋体" SIZE="3">对硬件的主要特性都提供了透明的支持,而不管这个特性是通过</font><font
FACE="Arial" SIZE="3">HAL</font><font FACE="宋体" SIZE="3">硬件支持的还是通过</font><font
FACE="Arial" SIZE="3">HEL</font><font FACE="宋体" SIZE="3">软件仿真的。</p>
<p ALIGN="JUSTIFY">很显然,软件仿真不能与硬件所提供的特性等效。可以调用</font><font
FACE="Arial" SIZE="3">IDirectDraw2::GetCaps</font><font FACE="宋体" SIZE="3">函数以查询硬件支持什么特性。在应用程序初始化的时候检查这些特性,你可以调整应用程序的参数以提供优化的性能。</p>
<p ALIGN="JUSTIFY">在有些情况下,硬件特性与软件仿真的组合操作反而会比单纯使用软件仿真效率更低。例如,如果显示设备驱动程序支持</font><font
FACE="Arial" SIZE="3">DirectDraw</font><font FACE="宋体" SIZE="3">,但不支持带缩放的</font><font
FACE="Arial" SIZE="3">Blit</font><font FACE="宋体" SIZE="3">操作,在从视频</font><font
FACE="Arial" SIZE="3">RAM</font><font FACE="宋体" SIZE="3">页面进行带缩放的</font><font
FACE="Arial" SIZE="3">Blit</font><font FACE="宋体" SIZE="3">操作时,将导致明显的速度降低。这是因为有些视频</font><font
FACE="Arial" SIZE="3">RAM</font><font FACE="宋体" SIZE="3">的速度要比系统</font><font
FACE="Arial" SIZE="3">RAM</font><font FACE="宋体" SIZE="3">慢,迫使在访问视频</font><font
FACE="Arial" SIZE="3">RAM</font><font FACE="宋体" SIZE="3">页面的时候,</font><font
FACE="Arial" SIZE="3">CPU</font><font FACE="宋体" SIZE="3">进入等待状态。如果你的应用程序使用硬件不支持的特性,某些时候,在系统</font><font
FACE="Arial" SIZE="3">RAM</font><font FACE="宋体" SIZE="3">中创建页面更为合适,这样才能避免</font><font
FACE="Arial" SIZE="3">CPU</font><font FACE="宋体" SIZE="3">访问视频</font><font
FACE="Arial" SIZE="3">RAM</font><font FACE="宋体" SIZE="3">时的效率损失。</p>
</font><font FACE="黑体" SIZE="5"><b>
<li>系统集成</b></font></li>
</ol>
</ol>
<p><font FACE="宋体" SIZE="3"> </p>
<p ALIGN="JUSTIFY"> </p>
<p ALIGN="JUSTIFY">下图展示了</font><font FACE="Arial" SIZE="3">DirectDraw</font><font
FACE="宋体" SIZE="3">,图形设备接口(</font><font FACE="Arial" SIZE="3">GDI</font><font
FACE="宋体" SIZE="3">),硬件抽象层(</font><font FACE="Arial" SIZE="3">HAL</font><font
FACE="宋体" SIZE="3">)和硬件仿真层(</font><font FACE="Arial" SIZE="3">HEL</font><font
FACE="宋体" SIZE="3">)四者之间的关系。</p>
<p ALIGN="JUSTIFY">如上图所示,</font><font FACE="Arial" SIZE="3">DirectDraw</font><font
FACE="宋体" SIZE="3">对象与</font><font FACE="Arial" SIZE="3">GDI</font><font
FACE="宋体" SIZE="3">位于同一层次,都通过一个设备相关的抽象层来直接访问硬件设备。与</font><font
FACE="Arial" SIZE="3">GDI</font><font FACE="宋体" SIZE="3">不同的是,</font><font
FACE="Arial" SIZE="3">DirectDraw</font><font FACE="宋体" SIZE="3">会尽可能的利用硬件的加速特性。如果硬件不支持某特性,</font><font
FACE="Arial" SIZE="3">DirectDraw</font><font FACE="宋体" SIZE="3">会使用</font><font
FACE="Arial" SIZE="3">HEL</font><font FACE="宋体" SIZE="3">试图将该特性进行软件仿真。</font><font
FACE="Arial" SIZE="3">DirectDraw</font><font FACE="宋体" SIZE="3">可以以设备环境(</font><font
FACE="Arial" SIZE="3">DC</font><font FACE="宋体" SIZE="3">)的形式提供页面内存,使得开发者可以使用</font><font
FACE="Arial" SIZE="3">GDI</font><font FACE="宋体" SIZE="3">的函数操作页面对象。</font></p>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -