这样说有点一棍子打死的感觉,其实VBE不是万能的,光DDRAW中提供的那些硬件加速特性VBE就难以全部做到,VBE是现在显卡的一套基本子集,各显卡厂商还有更多的高级或者说现代特性,这些高级特性的使用通过WINDOWS的硬件无关抽象层连接到显卡的驱动,显卡提供相应的能力的DDRAW直接调用,没提供的可以软件实现,2D这样,3D就更不用说了,显卡厂商制造的时候就得按照DX的需要来,提供D3D要的特性。DX可能的确是不适合直接用于工程,不过有大量的第三方封装引擎可以选用,可以避免与生涩的COM打交道。
我并未否认VBE,毕竟大多的2D特性是建立在VBE上的,但硬件Blit和ColorKey也是有用的,DDRAW虽然没直接提供几何绘制接口,用GDI当然可以,但效率过低,直接LOCK表面再写显存当然也可以,但比起反复的加锁和解锁来说,硬件位块传送就显得有用了,画点函数可以这样做:建立一个支持硬件位块传送的surface,大小为1X1,即一个像素,往目标表面指定位置直接Blit。如果觉得这个比显存直写来的快不了多少的话,水平线和垂直线可能更能运用这个硬件加速特性。对支持硬件加速的Colorkey位块传输在下更是垂涎已久。我赞成2D图形处理不会也不必增加更多的特性,VBE本身提供的说出来也就主要也就两种而已——显存直访、显存首址重定向(其应用可衍生出换页和大虚拟屏幕等),就这些了,已经满足2D处理的应用了。如下图:
DDRAW
______________|______________
| |
VBE 厂商特性
(显存直访、首址重定向等) (硬Blit等)
实在不算多,说DDRAW没多提供什么,那VBE本身又提供了多少呢?2D嘛,不是要多,而是要有用,VBE提供的都是极有用的,而从基本几何绘图到位图传输,有了那个厂商特性就如虎添翼。我眼巴巴的等着这个特性入标准呢……
我不认为显存用的频率一定会比主存少,也不认为主存和CPU的发展比显存及GPU快,当个人电脑还在用DDR2内在的时候显存颗粒已经是DDR3甚至DDR4了,而且容量越来越大——128M的普通的不能再普通,512M以上的都比比皆是;GPU的制程也直逼CPU,而且它要做的事只是处理图形而已(现在一些思路提出的利用GPU上的浮点运算单元协助处理CPU事务,利用GPU过剩的处理能力)。
写到最后,发现不是我们的观点不同,而是都对VBE有更高有寄望而已。
裸DX用起来是不顺手。
至于VBE AF,好像各显卡厂商的支持都不得力,而且连FreeAF项目也早已停止了,这不得不说是个遗憾。
我还是那个看法,DirectDraw 其实就是 windows 下的 VBE,除此之外他并没有提供更多的功能。连一个图形库都谈不上
不过新版的 DirectX 中 DirectDraw 已经被 DirectGraphics 所取代。
恩,就像FrameBuffer就为LINUX提供VBE接口一样。这是必要的,如果系统不提供这样的底层接口,那形形色色的图形库有从何而来呢。