DDraw的离屏blt
先说下操作吧:就是在两个离屏页面上相互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相关推荐
- 一篇关于魅族M82D游戏开发的帖子,详细介绍了M8上DDraw的使用,DDraw同时适用于WinCE系统
原文地址::http://www.j2megame.com/html/xwzx/ty/512.html 相关网帖 1.M8SDK教程-游戏开发心得(一): 游戏程序框架----http://bbs.m ...
- ddraw 的blt 方法
// ------------------------------------------------------------------------- // 文件名 : 7_7.cpp ...
- directdraw显示yuv视频,出现屏保时,yuv显示不出来,表面丢失
原因是: DDrawSurface 丢失, DDraw表面在很多情况下都会丢失(如:启动其他全屏独占程序,屏保,或锁屏时), 表面丢失其实就是表面所使用的内存或显存被DirectDraw系统释放, 分 ...
- H264解码之DDraw显示YUV
头文件: #pragma once #include "ddraw.h" #include <time.h> #pragma comment (lib, "d ...
- anydesk截屏技术
anydesk针对不同的操作系统使用了不同的截屏技术 针对NT5系统使用DDraw截屏. 针对NT6系统优先使用DXGI截屏,如果不支持DXGI则使用DX截屏. 为什么这样做呢?首先DirectDra ...
- VB.NET实现DirectDraw9 (1) 托管的DDraw
VB.NET实现DirectDraw9 (1) 托管的DDraw 关键字: VB.NET DirectX DirectDraw 9 作者:董含君 ...
- Android fb0 截屏实现
问题:我们有几个项目,在项目1和项目2上实现截屏是没有问题的,但是在项目3上实现截屏是不行的 原因:分辨率差异引起的问题,分辨率长宽一定要是32的整数倍 Dear customer, Sorry fo ...
- 一个简单的DDraw应用程序2
//------------------------------------------------------------------------- // 文件名 : 6_1.cpp // 创建者 ...
- 尤里复仇退出界面_红色警戒2、尤里的复仇win10卡死、分辨率太大、黑屏问题多种解决方法(已测)...
Windows 10如约而至,用户在尝试新系统新感觉体验的同时,红色警戒(红色警戒2尤里的复仇,以下简称YR)--这款老游戏的命运又会如何呢?相信大家现在最关心的是:Windows 10到底能不能正常 ...
最新文章
- 能说明你的Javascript技术很烂的五个原因
- 吴穹博士谈软件工程未来发展趋势
- 鼠标缩略图遥感图像显示时的连动效果——Qt实现
- 20160507-hibernate入门
- 聊聊如何从零开始自学编程
- 阿里云Ubuntu系统部署K8s集群
- 济南oracle 认证费用,济南ORACLE管理培训价格
- c语言1到100奇数和与偶数和,C语言实现1到100的和奇数与偶数和
- 洛谷 P2168 [NOI2015] 荷马史诗
- Java工具类Result<T>
- 九阳豆浆机各型号字母数字代表的意思
- 测序 测序过程和原理
- python 股票指标库talib_【手把手教你】股市技术分析利器之TA-Lib(一)
- leaflet地图资源整理
- 商业世界里的“谈判”到底是什么
- 阿木社区的SLAM无人机硬件配置
- MySQL 用sql语句格式化时间和日期
- Ubuntu下Redis设置密码时配置文件修改密码成功但仍CONFIG GET为空问题解决摸索小记
- JavaScript节流函数, 防止大量函数触发解决办法
- ADB+bat实现循环刷屏
热门文章
- 13.6.3 程序案例:BLE低功耗蓝牙调试助手
- [软考]之原码、反码、补码和移码
- asp.net网站修改aspx.cs文件后如何不替换网站就生效
- send()函数recv()函数详解
- 会员金闪闪动画字体 (CATextLayer + CAGradientLayer)
- 天大的本事,顶不上一张会说话的嘴
- LibGdx练习-像素鸟(一)
- BZOJ 1226 [SDOI2009] 学校食堂Dining
- C# 关于Microsoft.Office.Interop.Word中app.Documents.Add/Open报错
- intelliJ idea 使用maven创建spring+springMVC+mybatis(SSM)