请教:研究DXSDK8的源代码后,发现BMP显示用的是GDI的函数,如果直接把BMP一个象素一个象素写进去,是不是更快?
大家好:
小弟初学DX。研究了一下DX的SAMPLE中的ddutil.cpp,看了一下CDisplay和CSurface类的实现过程。发现其中显示BMP图片的功能都是使用GDI的API函数实现的,我学DX的时候看的是另外一本用DX开发游戏的书,里面讲的方法是将BMP图片的内容一个象素一个象素的写到显存里面去。
我想问问高手:通过GDI函数和直接写显存,哪种方法更快?
还有,当创建DirectDraw对象后,GDI的API操作的内存区域是否会自动变成操作显存。我既想使用GDI丰富的图形处理函数,又想要高速的绘图效果,怎么办呢?
[282 byte] By [
msdn] at [2007-8-14 18:41:35]

# 2 Re: 请教:研究DXSDK8的源代码后,发现BMP显示用的是GDI的函数,如果直接把BMP一个象素一个象素写进去,是不是更快?
daizq兄,你说的我还是不明白:
使用DX,直接写显存,主表面和后备缓冲区的切换(Flip),区域的复制(BltFast),设置关键色,图形剪裁————这些方面DX和GDI函数一样好用,并且快。
但是,图形的缩放(StretchBlt)、旋转(Plgblt)、设置透明度等功能,GDI有现成的东西可用,而DX没有。
如果程序中有设置关键色,区域复制,图形变换这些复杂的需求,通过GDI在画布上作图,能满足性能的要求吗?你所指的画布,应该就是内存吧?