有关视频播放类软件和游戏软件是选择GDI开发好还是DirectX开发好

发现不少人用GDI开发一些图形程序,它位于Windows图形子系统中,是设备无关的图形引擎,所以很多人认为游戏开发也可以使用GDI,这种观点看起来没有错,实际上GDI也确实可以用来开发游戏,但是它必须依赖于HAL(硬件抽象层)中的视频端口驱动程序以及视频设备(显卡)驱动程序通信才能通知具体设备渲染出画面,效能上比较差,如果一个大型程序用GDI做运行起来就比较吃力(我的观点),所以微软还提供了DirectX包,它可以直接操作硬件(所以起名叫做Direct),效率比较高(它可以越过HAL和驱动程序,直接和设备驱动通信),所以现在的2D/3D图形引擎基本是使用DirectX作为底层来开发,所以基本上GDI可以作为桌面应用窗口的重绘和一些特殊效果的绘制,

另一方面要是开发视频播放软件和游戏,最好使用DirectX或者OpenGL.

 

另外这里有一个推论,因为DirectX是基于COM的组件,如果用C#之类的托管代码来调用的,Pinvoke也是需要损失效率的,因为不仅仅需要参数的封送,还需要很多的处理过程,那么直接操作DirectX就很好了,不要使用托管代码来写游戏之类的软件,虽然可以,但是效能较低,还是使用C/C++这样的非托管代码好一些.在VS IDE中唯一能兼顾非托管代码和托管代码的就是VC++了,不要使用C#干这些事情了哦

你可能感兴趣的:(游戏,C++,c,C#,vc++)