最近学习用DirectDraw来处理图像方面,不过我发现用DirectDraw来显示图像也还是要用到StretchBlt、LoadImage等函数。这些函数是Win32API函数吧?还是GDI函数?GDI函数与Win32API函数有什么关系。GFD函数也是Win32API函数吗?还有AlphaBlend用在DirectDraw中也行。
DirectX也要用到GDI吗?
求解。
DirectX也要用到GDI吗?
求解。
因为听说DX11的2D处理函数跟GDI一样丰富了。DX11完全可以做2D图形图像处理了。
gdi+一定程度上封装了gdigdi的功能就是单一的把图形打印到内存dc上
dx的作用是处理多媒体,包括图像和视频,dx处理图形后,是可以由gdi函数来把处理后的图形显示到内存dc上的,dc上的图像再通过某种机制传给显卡的内存,最后到显示器;dx也有自己的一套显示图形的机制,并不通过常规内存dc,而是直接打印到显卡的内存上,不过这是个很繁琐的过程,dx通过com组件把这个功能封装起来,供用户使用;有利就有弊,直接打印到显卡是可以节省大量系统资源的,但代价是要和硬件(即显卡)直接打交道,windows编程是不推荐这样做的,这样就产生如下两种情形;
1.想要自由操作图像就必须在常规的内存上操作,即只能用gdi
2.想要效率,用dx显示函数,就没自由,一切听人家的,你对图形操作的权限很小因此简单的显示功能(比如显示图片,打汉字,对图形的修改较多),你必须要参与的,可以用gdi
复杂的显示功能(比如视频播放),你参与的很少,用dx就好多了两套显示机制,你可以根据实际情况自己调整;
比如不用LoadImage、StretchBlt等?
一是有些功能的确要用到gdi
二是它们的某些系统调用入口在gdi32.dll中,NtGdiDdCreateDirectDrawObject