OpenGL/DX与GDI的实现有啥具体区别呢其中哪些后缀名的文件起啥作用呢( 二 )


【OpenGL/DX与GDI的实现有啥具体区别呢其中哪些后缀名的文件起啥作用呢】 不知道这些能不能解答题主一部分疑惑,我用黑体标识了几个关键的地方,总结一下就是gpu厂商需要遵循微软的规范(d3d的运行时和dx图形子系统)来编写驱动,OpenGL和DirectX有自己要处理一些事情,这些事情的处理办法被放在各自的函数库中(例如,d3d11/opengl.lib或者dll),还有一些事情需要驱动程序去做,他们任何一个缺一不可(缺DirectX runtime就成了面向显卡编程了,缺驱动支持就全部软件实现,面向ppt编程)。

■网友
额,我先假设你有一个函数叫draw(x,y, rgb)。那么对于任意一张图片,你就可以通过这个函数把他绘制在屏幕上。而操作系统需要做的就是根据这个函数来调用外设的驱动一个个的点亮屏幕像素点。而我们也很容易猜到显示屏的驱动肯定会有一个函数接口来告诉你怎么修改任意像素点的rgb值,而操作系统也只是重新封装了一下。无论gdi还是dx,gl。其实现都得靠驱动,甚至像opengl他根本只是个规则,实现全靠驱动,你装n卡驱动的时候会有n卡驱动的opengl实现,装a卡的时候有a卡的,甚至于集显也和他们不一样。换句话说,你会发现gl的dll文件其实是装显卡驱动的时候就已经在c/windows/system32装好了.........有时候你写的shader如果有bug会发现随着显卡不同效果也不一样,贼酸爽。他们的区别在于是否完全依靠显卡进行图形图像运算。像gdi你要画一个立方体,你必须在cpu上先处理好立方体的图片数据,然后才能指挥驱动进行绘制。而在dx或者gl里面,你只需要指定很少的三维数据,就可以通过显卡完全计算出最终的图片和像素数据。也因此dx/ gl百分之八九十的东西都是显卡驱动方面的。directx使用com是为了上层接口的通用性而不是说用com设计出了驱动。驱动还是原来的驱动。


推荐阅读