Sign-up....

请教:研究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]
# 1 Re: 请教:研究DXSDK8的源代码后,发现BMP显示用的是GDI的函数,如果直接把BMP一个象素一个象素写进去,是不是更快?

用GDI函数在画布上作图,然后写到BitMap(DiB)中,再用directdraw显示

daizq at 2005-5-29 21:11:36 >
# 2 Re: 请教:研究DXSDK8的源代码后,发现BMP显示用的是GDI的函数,如果直接把BMP一个象素一个象素写进去,是不是更快?

daizq兄,你说的我还是不明白:

使用DX,直接写显存,主表面和后备缓冲区的切换(Flip),区域的复制(BltFast),设置关键色,图形剪裁————这些方面DX和GDI函数一样好用,并且快。

但是,图形的缩放(StretchBlt)、旋转(Plgblt)、设置透明度等功能,GDI有现成的东西可用,而DX没有。

如果程序中有设置关键色,区域复制,图形变换这些复杂的需求,通过GDI在画布上作图,能满足性能的要求吗?你所指的画布,应该就是内存吧?

ah__fu at 2005-5-31 3:55:17 >

专题开发

All Classified