最近想了解一下c++的图形编程,首先了解一下GDI,DX,OPENGL的区别才好更好的进入图形编程的学习当中。
首先让我们来看下GDI。GDI全称是Graphics Device Interface,图形设备接口,是微软开发的通用的windows系统图形编程接口,它的主要任务是负责系统与绘图程序之间的信息交换,处理所有Windows程序的图形输出。GDI拥有丰富的图形图像处理接口,把图形图像的处理与真正的硬件设备分割开来,使开发人员在处理图像的时候不用考虑这个图像到底和哪个设备相关(输出到哪个设备上)。但是GDI在多媒体的应用上就差强人意了。
然后让我们来看下DX,同样DX也是微软开发的一个3D软件绘图包,它包括了语音鼠标键盘加速包,还有视频、图象等处理库。早期DX在处理图像的时候效率比较低,目前在微软绑定操作系统的基础上DX得到了很大的发展,现在性能上基本已经超过了OPENGL。基本绘图方法和OPENGL差不多,只不过接口采用COM方式,要想用好DX,COM的编程知识想必是要首先了解的。 最后OPENGL登场了,
OPENGL是Silicon Graphics开发的一套三维图形软件包,出现很早,功能超强,且接口简洁,运算效率绘图效果极高,一般用在处理图像的专业领域,和科研部门中。
总结: OPENGL和DX主要面向多媒体开发,比如视频播放。游戏要求很好的显示效果,同时要能保证速度,比如视频至少的25fps。这要GDI来画,你的电脑什么都不干都未必能完成(GDI是用cpu来画图)。此时就要直接把数据送给显卡进行处理,并且充分利用显卡的处理和特效功能,DX叫Direct X其意义就是直接X。 OPENGL是第三方开源的图象库,而DX是微软的。Vista,win7的桌面系统已经开始使用DX来显示窗口菜单等常见元素,因为它很漂亮,GDI来做会很慢。