我初学DirectDraw,听说性能还好,绘制图形很快,但我测试结果是在1024*768的16bit下,api函数BitBlt和directdraw的blt速度差不多,都是4000多,这个数字是用QueryPerformanceCounter函数测试出来的,如果要真正提高绘图性能应该怎么做呢?
我是用窗口模式的,一个主表面,一个off-line表面,然后两个blt了一下,
绘制大小都是1024*768
而且版本是8.1的release版,显卡是64M的流行显卡
听说DirectDraw可以提高最少几十倍的速度,到底怎么做呢?请高手指点一二,谢谢
我送大家1000分,谢谢!很急

解决方案 »

  1.   

    你肯定搞错了,你既然不知道怎么用DirectDraw你是怎么测出它的速度来的呢?
      

  2.   

    ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE|DDSCAPS_VIDEOMEMORY|DDSCAPS_3DDEVICE ;
    这是我的创建表面时的参数
      

  3.   

    楼上的,我是这样做的:CString s;
    QueryPerformanceCounter(&lgtime);
    hRet = g_pDDSPrimary->Blt(NULL, g_pDDSBack, NULL, DDBLT_WAIT,NULL);
    QueryPerformanceCounter(&oldtime);
    s.Format("%d",oldtime.QuadPart-lgtime.QuadPart);
    AfxMessageBox(s);
      

  4.   

    我觉得这样不妥,因为Blt一次的时间与Blt函数调用的时间的差别不太明显,所以得出的结果也不够准确。不如连续Blt1000次然后求平均值。
      

  5.   

    但是窗口模式只能Blt,不能Flip
      

  6.   

    多blt几次试试,一次的结果不具普遍性
      

  7.   

    200次/S????
    你的彩显能上到200HZ么?上不到的话你岂不是在做无用功?!