入门者问,在DirectDraw中如何得到BACKBUFFER?

牧童027 2002-11-26 09:23:08
小子最近刚开始学,在看一本名为《DirectX7速成教程》的书,书里面第三章讲制作一个双缓冲来刷屏,我照着做了一下,总是在要得到lpBackBuf时候出错。以下是部分代码。
ZeroMemory(&ddsd, sizeof(ddsd));
ddsd.dwSize = sizeof(ddsd);
ddsd.dwFlags = DDSD_CAPS|DDSD_BACKBUFFERCOUNT;
ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE|DDSCAPS_FLIP|DDSCAPS_COMPLEX;
ddsd.dwBackBufferCount = 1;
hRet = lpDD->CreateSurface(&ddsd, &lpDDSPrimary, NULL);//创建界面对象
if (hRet != DD_OK)
return FALSE;

ddscaps.dwCaps = DDSCAPS_BACKBUFFER;
hRet = lpDDSPrimary->GetAttachedSurface(&ddscaps,&lpDDSBack);//!!就是这句,总返回错误!!
if(hRet != DD_OK)
return FALSE;
...全文
36 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
In355Hz 2002-11-30
  • 打赏
  • 举报
回复
调用 GetAttachedSurface 前注意先清空 ddscaps 结构:
ZeroMemory(&ddscaps, sizeof(ddscaps));

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧