先说下操作吧:就是在两个离屏页面上相互blt,最后在一起blt到主页面上.(如离屏A,离屏B.要把离屏B的数据blt到A上,当然不是全部覆盖A了.全部覆盖A就没有意义了.就是覆盖A中的一小部分.最后统一blt到主页面(primary)上.) 为什么不把A,B分别blt到primary上,原因是会出现闪屏现象.

bool InitDirect()
{
 ......
 hr=lpdd2->CreateSurface(&ddsd,&lpDDSPrimary,NULL);
 if(hr!=DD_OK)
 {
          
 }
 ddsd.dwFlags=DDSD_CAPS|DDSD_WIDTH|DDSD_HEIGHT;
 ddsd.ddsCaps.dwCaps=DDSCAPS_OFFSCREENPLAIN;
 ddsd.dwHeight=iScreenHeight;
 ddsd.dwWidth=iScreenWidth;    
 hr=lpdd2->CreateSurface(&ddsd,&lpDDSOffScreenOut,NULL);
 if(hr!=DD_OK)
 {
  return false;
 }

ddsd.dwHeight = A.bottom - A.top;
 ddsd.dwWidth = A.right - A.left;    
 hr=lpdd2->CreateSurface(&ddsd,&lpDDSPicView,NULL);
 if(hr!=DD_OK)
 {
  return false;
 }
 return true;
}

void Drawgui()
{

lpDDSOffScreenOut->GetDC(&m_hdc);
   
    ......
    BitBlt(m_hdc,165,390,111,83,hDc,165,390,SRCCOPY);
    ......
    lpDDSOffScreenOut->ReleaseDC(m_hdc);
    if(bIsDrawB)  //离屏B blt到 A
     lpDDSOffScreenOut->Blt(&RT,lpDDSPicView,&srcRt,DDBLT_WAIT,NULL);
   // 注意B -->A 一定要在B->ReleaseDC(...);之后.我就是没有注意这点.郁闷了好一阵子.

//离屏A blt到 Primary
    lpDDSPrimary->BltFast(0,0,lpDDSOffScreenOut,&rc,DDBLTFAST_NOCOLORKEY|DDBLTFAST_WAIT);
    
}

void DrawB()
{
DDSURFACEDESC        ddsdSurface;
ddsdSurface.dwSize = sizeof(DDSURFACEDESC);

if(DD_OK == lpDDSPicView->Lock(NULL,&ddsdSurface,DDLOCK_WAIT,NULL))
{
memcpy(ddsdSurface.lpSurface,RGBbuf,400*320*2);
lpDDSPicView->Unlock(ddsdSurface.lpSurface);
}
}

DDraw的离屏blt相关推荐

  1. 一篇关于魅族M82D游戏开发的帖子,详细介绍了M8上DDraw的使用,DDraw同时适用于WinCE系统

    原文地址::http://www.j2megame.com/html/xwzx/ty/512.html 相关网帖 1.M8SDK教程-游戏开发心得(一): 游戏程序框架----http://bbs.m ...

  2. ddraw 的blt 方法

    // -------------------------------------------------------------------------  // 文件名      :  7_7.cpp ...

  3. directdraw显示yuv视频,出现屏保时,yuv显示不出来,表面丢失

    原因是: DDrawSurface 丢失, DDraw表面在很多情况下都会丢失(如:启动其他全屏独占程序,屏保,或锁屏时), 表面丢失其实就是表面所使用的内存或显存被DirectDraw系统释放, 分 ...

  4. H264解码之DDraw显示YUV

    头文件: #pragma once #include "ddraw.h" #include <time.h> #pragma comment (lib, "d ...

  5. anydesk截屏技术

    anydesk针对不同的操作系统使用了不同的截屏技术 针对NT5系统使用DDraw截屏. 针对NT6系统优先使用DXGI截屏,如果不支持DXGI则使用DX截屏. 为什么这样做呢?首先DirectDra ...

  6. VB.NET实现DirectDraw9 (1) 托管的DDraw

    VB.NET实现DirectDraw9 (1) 托管的DDraw 关键字: VB.NET DirectX DirectDraw 9                             作者:董含君 ...

  7. Android fb0 截屏实现

    问题:我们有几个项目,在项目1和项目2上实现截屏是没有问题的,但是在项目3上实现截屏是不行的 原因:分辨率差异引起的问题,分辨率长宽一定要是32的整数倍 Dear customer, Sorry fo ...

  8. 一个简单的DDraw应用程序2

    //------------------------------------------------------------------------- // 文件名 : 6_1.cpp // 创建者 ...

  9. 尤里复仇退出界面_红色警戒2、尤里的复仇win10卡死、分辨率太大、黑屏问题多种解决方法(已测)...

    Windows 10如约而至,用户在尝试新系统新感觉体验的同时,红色警戒(红色警戒2尤里的复仇,以下简称YR)--这款老游戏的命运又会如何呢?相信大家现在最关心的是:Windows 10到底能不能正常 ...

最新文章

  1. 能说明你的Javascript技术很烂的五个原因
  2. 吴穹博士谈软件工程未来发展趋势
  3. 鼠标缩略图遥感图像显示时的连动效果——Qt实现
  4. 20160507-hibernate入门
  5. 聊聊如何从零开始自学编程
  6. 阿里云Ubuntu系统部署K8s集群
  7. 济南oracle 认证费用,济南ORACLE管理培训价格
  8. c语言1到100奇数和与偶数和,C语言实现1到100的和奇数与偶数和
  9. 洛谷 P2168 [NOI2015] 荷马史诗
  10. Java工具类Result<T>
  11. 九阳豆浆机各型号字母数字代表的意思
  12. 测序 测序过程和原理
  13. python 股票指标库talib_【手把手教你】股市技术分析利器之TA-Lib(一)
  14. leaflet地图资源整理
  15. 商业世界里的“谈判”到底是什么
  16. 阿木社区的SLAM无人机硬件配置
  17. MySQL 用sql语句格式化时间和日期
  18. Ubuntu下Redis设置密码时配置文件修改密码成功但仍CONFIG GET为空问题解决摸索小记
  19. JavaScript节流函数, 防止大量函数触发解决办法
  20. ADB+bat实现循环刷屏

热门文章

  1. 13.6.3 程序案例:BLE低功耗蓝牙调试助手
  2. [软考]之原码、反码、补码和移码
  3. asp.net网站修改aspx.cs文件后如何不替换网站就生效
  4. send()函数recv()函数详解
  5. 会员金闪闪动画字体 (CATextLayer + CAGradientLayer)
  6. 天大的本事,顶不上一张会说话的嘴
  7. LibGdx练习-像素鸟(一)
  8. BZOJ 1226 [SDOI2009] 学校食堂Dining
  9. C# 关于Microsoft.Office.Interop.Word中app.Documents.Add/Open报错
  10. intelliJ idea 使用maven创建spring+springMVC+mybatis(SSM)