概述
Direct3D是一套底层图形API,借助该API我们可以利用硬件加速功能来实现3D场景的绘制,Direct3D可以视为应用程序和底层设备的交互。下图展示了Direct3D和硬件之间的交互关系:
图中Direct3D部分是一套已经定义好的,由Direct3D提供给应用程序和开发人员的接口函数,这些接口代表了当前Direct3D支持的所有功能。
注意:有些功能Direct3D支持,但是硬件设备却未必支持。
在上述的图中,Direct3D和硬件设备之间有一个环节:HAL(硬件抽象层),因为市面上的图形卡的种类太多了,Direct3D无法直接和硬件设备进行交互,例如:同样的一个清屏操作,不同的图形卡之间的操作可能大不一样。所以Direct3D就需要设备的制造商来实现一个HAL。
HAL是一个指示设备完成某些操作的设备相关的代码集,简单地说:HAL是代码集
基于HAL,Direct3D就可以不必关心底层硬件,其规范的指定便可以独立于硬件设备。
总结:设备制造商将自己硬件所支持的所支持的全部功能,都是实现到HAL里面。那些Direct3D支持但是设备不支持的功能就无法在HAL中实现。也就是说:调用一个没有在HAL中实现的Direct3D函数,就会调用失败(除非他是一种顶点处理运算,并且用户已经指定了软件顶点运算处理方式,这点暂时我也不太明白,有时间请教大神之后,再来补充吧&