1. D3D入门
本节提供一个对D3D图形编程接口(API)的简短介绍。这里你将发现一个图形管道的概貌以及帮助你实现基本D3D功能的指南。
1.1. D3D架构
本节包含Microsoft的D3D组件、其他Microsoft DirectX、操作系统和系统硬件之间的关系;下面将讨论这些主题。
1.1.1. D3D的架构概览
这是一个图形管道的描述。每个块的功能性在下面介绍,连接包含更多的信息。
更多关于D3D的可编程节的架构见《可编程顶点梯度架构》和《可编程像素梯度架构》。
1.1.2. 硬件抽象层
微软的D3D通过HAL(硬件抽象层)提供设备独立;HAL是由设备制造商提供的设备指定接口,D3D直接使用显示硬件来工作。程序才能不需要和HAL交互。应用程序使用D3D暴露的一系列接口和方法而不是HAL提供的机制来使用显示设备。设备制造商在WINDOWS的各个平台上(XP、2000、98等)上实现32位的编程。HAL可以是显示驱动器的一部分或和设备驱动器通过一个驱动器生产商定义的接口来通讯的独立DLL。
D3D HAL由芯片制造商、主板生产商或OEM实现。HAL仅仅实现设备依赖的代码并在不竞争的执行。如果硬件没有执行一个功能,HAL就不会将其作为硬件功能来报告。另外,HAL并不验证参数,D3D在调用HAL之前执行参数验证。
在微软DirectX 9,HAL可以有三种不同的顶点处理模式:软件顶点处理、硬件顶点处理和同一个设备上的混合顶点处理。纯设备模式是HAL设备的变量。纯设备类型仅仅支持硬件顶点处理,并仅仅允许应用程序查询设备状态的一个小的子集。另外,纯设备仅仅在有最小化容量级别的适配器上可用。
1.1.3. 系统整体
下图显示了微软D3D、GDI、HAL以及硬件之间的关系。
在上图中,我们看到,D3D程序和GDI程序一样都通过显示卡的设备驱动来访问图形硬件。与GDI不同的是,D3D可以在选择一个HAL设备的时候利用硬件特性,HAL设备提供了基于显示卡支持的硬件加速。你可以通过D3D在运行的时候来决定设备是否有这个能力。
关于设备的更多信息参见设备类型。