文档介绍:游戏开发基础(5) 第五章 diectxdarw 基础篇第一节 DirectDraw 简介 Grubers 的一个观点是 DirectDraw “只是一个 bltting 发动机”。这是相当准确的,但却太简化了。更准确地讲, DirectDraw 是一个可以提供软件仿真测试的独立于硬件设备的 bltting 发动机。 DirectDraw 的主要用途是尽可能快、尽可能可靠并且尽可能连续地将图形考贝到视频显示设备上。另外一个定义 DirectDraw 的方式是把它作为一个视频存储器管理器, 同常规的存储器管理器一样, DirectDraw 发放存储器信息包,跟踪每一个信息包的状态。信息包可以随意地创建、复制、修改或破坏,同时这些操作的细节被程序员隐含起来,这样讲是过于简单了。此外, DirectDraw 是能够使用系统 RAM 和视频 RAM 的。存储器管理器也经常被设计成和主要目标一样强健,而不只是追求性能。对于 DirectDraw ,性能只是设计目标之一。从技术角度讲, DirectDraw 是随同设备驱动器集合的便携式 API 。 DirectDraw 设计成完全避开传统意义上的 Windows 图形机构(GDI ,或称图形设备接口)。 GDI 由于性能低而名声不好, 所以 DirectDraw 的设备独立性在提供最佳性能方面是至关重要的。第二节 DirectDraw 基本概念 1. 显示模式显示模式是由允许将要显示的图形输出的显示硬件支持的可视配置。最常用的显示模式属性是分辨率。 Window s 使用的显示模式的默认值是 640 × 480 的分辨率。这意味着,水平方向有 640 个像素,垂直方向有 480 个像素。其他一些常见的显示模式分辨率有 800 × 600 , 1024 × 768 。一些显示卡支持 Mode X 显示模式。一个典型的 Mode X 显示模式的分辨率为 320 × 200 。显示模式也随像素深度的变化而变化。像素深度决定着每一个像素所容纳的多少不同的值,因而也就可以显示多少种颜色。例如对于 8 位像素深度的显示模式, 每个像素能够再现 256 种颜色的一种。像素深度为 16位的显示模式支持 65536 种颜色(即2的n 次方) ,典型的像素深度为 8、 16、 24和 32 位。显示模式由安装在机器中的显示设备或视频卡支持。显示设备有自己的 RAM , 从计算机的 RAM 中分离出来。我们把位于显示设备中的存储器称为显示 RAM ,而把常规存储器称为系统 RAM 。支持一个给定的显示模式的 RAM 的容量取决于显示模式的分辨率和像素深度。例如, 640 × 480 × 8(640 × 480 像素, 深度为8位) 的显示模式需要 30720 0 字节。 1024 × 768 × 16 的显示模式需要 1572864 字节。支持显示模式的存储器必须是显示 RAM 。一个给定显示设备所支持的显示模式因此也被可以利用的显示 RAM 的容量所限制。例如, 1024 × 768 × 16 的显示模式因为需要一兆字节以上的内存,所以就不能被只有一兆字节 RAM 的显示设备所支持。 DirectDraw 的一个主要特征是显示模式切换。这允许一个 DirectDraw 应用程序检测和激活所安装的显示设备所支持的任何显示模式。我们将在第 4 章中讨论显示模式切换的细节。 2. 硬件加速 DirectDraw 具有最优性能的最重要的原因是,它尽可能地使用硬件加速来进行设计。硬件加速发生在当显示设备能够用建立在显示设备之中的处理功能执行操作时。硬件加速具有两个优点, 首先, 当硬件加速出现的时候, 硬件按指定要求设计成支持图形操作,这提供了执行给定任务的最快的方法:其次,硬件加速使得计算主处理器从执行操作中解放出来,这使得主处理器可以执行其他任务。 3. 表面表面是存储器的一个矩形部分的 DirectDraw 术语,通常包括图像数据。该存储器通常用来表示一个存在于显示 RAM 或系统 RAM 中的表面。驻留在显示 RAM 中的表面享有超高性能,因为绝大多数显示硬件不能对系统 RAM 直接存取。表面分为向大类,最简单的类型是脱离屏幕表面。脱离屏幕表面可以驻留在显示 RAM 中或系统 RAM 中,但却不能被显示。这类表面一般用于存储子画面和背景。另一方面,一个主表面是可在屏幕上看到的视频 RAM 的一部分部分。所有的 DirectDraw 程序( 可以提供视频输出) 都拥有主表面。主表面必须驻留在显示 RAM 中。主表面通常很复杂,或是可翻转的。可翻转表面允许页面翻转,这是一项整个表面的内容可以通过一个硬件操作而瞬时可见的技术。页面翻转用于许多基于 DirectDra w 或其他的图形应用程序中, 因为它可以产生相当