新生事物的发展,总是伴随着新的概念产生,从软光栅化模拟3D以来,图形渲染技术已经快速发展了很多年。同样的也出现了很多新的标准和技术,如果不花时间很难有尽收眼底的清晰感,这里简单说说自己的理解。
DX11:
这是我了解的第一套渲染API,他的劣势是不能跨平台,甚至XP系统都不兼容,好在目前主流显卡都支持这个标准。他的优势,设计简洁,清晰,风格统一,更重要的是完善。因为是大公司推广,所以在测试这块会做的更完善,虽然有很多不兼容和不支持,但是兼容的和支持的都比较到位,这是个优点。
DX9:
既然有9为啥还要出11呢?如果只是为了加一些新特性,更不应该不兼容。这也体现9在设计上的一些缺点,它最大的缺点就是不自由,虽然9也有可编程管线,但是在用的时候还是有一些不自由的东西在里面,当然这主要是由前期硬件的特点决定的。它的不自由也体现在硬件标准上,还有就是微软为了推广11,9就停滞不前,其实完全可以不改变就的模式,而升级9的一些硬件上的标准。我的意思是做两个版本的DX11,一个是兼容9的一个是不兼容的,可惜没有。
opengl:
它是一个开放的,跨平台的标准,看到这个的时候仿佛看到了希望,但事实并非如此。首先微软只支持GL1.1的版本,但是现在标准都发展到GL4.3了。然后就是gl这个同意的标准,只是针对渲染底层的接口,而接口与本地的衔接这部分,各个平台又有自己的标准。window有WGL,ios有AGL,安卓的忘记了,反正就是它跨平台,但是只是局部的跨平台,这点让他打了折腾。最后,最蛋疼的一件事,就是它最有优势的手持设备领域,又单独发展了一个opengl es,导致很多手持设备只支持es不支持gl。最后需要补充的是,如微软的DX不一样,gl的规范的测试和硬件支持的完整性并不到位,尤其是在PC端,它始终处于次要角色,而手持设备上它又,唉可以说gl是很尴尬的。
opengl es:
是gl的删减版,主要为了适应手持设备的硬件条件,还有就是减少一些gl里面冗余的功能,就是如果在gl里面有三种方式解决一个问题的话,在es里面只会有其中一种。个人觉得这是一个比较好的选择,如果功能不受影响的话,这样可以降低学习成本以及开发维护成本,更多的选择其实就是更多的浪费。es在手持设备领域的地位是无可替代的,尤其是ios和安卓的支持。但是,它并不是没有缺点,它的缺点就是手持设备的种类太多,所以兼容性并不是那么的容易。这个也是所有的渲染标准都需要面对的,手持设备领域es始终是最佳方案。另外,跟ES配套的有一个EGL标准,它统一了gl存在的WGL,AGL,XGL这种问题。唯一的遗憾,PC机不支持。