关于DX中的backbuffer和present

shadowvv 2009-11-27 03:38:23
先看代码
if(pd3dDevice == NULL)
return NULL;
IDirect3DSurface9 *backBuffer = NULL;

if(FAILED(pd3dDevice->GetBackBuffer(0,0,D3DBACKBUFFER_TYPE_MONO,&backBuffer)))
{
return NULL;
}

for(;srcRect.bottom<736;)
{
pd3dDevice->StretchRect(mapSurface,srcRect,backbuffer,destRect,D3DTEXF_NONE);

srcRect.top++;
srcRect.bottom++;

pd3dDevice->Present(NULL,NULL,NULL,NULL)
}

这样写我可以得到map的动态效果

但是把present方法放在for循环之后只能得到一张静态的图片

backbuffer里只能存一张图片吗?还是我哪里写错了····明明看别人的代码不是这样的···

高手帮帮忙·
谢谢
...全文
367 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
星羽 2009-12-12
  • 打赏
  • 举报
回复
看看dx文档中的 backbuffer的讲解吧,你怎么会有backbuffer是一系列图片的想法呢 = =

backbuffer虽然可以有多个,但每一次present只会由当前别渲染的那个会交换到frontback
shadowvv 2009-12-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 kuguoxin 的回复:]
整个结构有问题吧?
绘制流程:
  1.清除后备缓冲
  2.开始渲染
  3.拷贝map中的区域到后备缓冲
  4.map rect 位置偏移
  5.交换后备缓冲到屏幕
  6.重复到第一步

[/Quote]

也就是说后备缓冲中只能存储一张图片··而不是像我想的那样是一系列图片???
kuguoxin 2009-12-04
  • 打赏
  • 举报
回复
整个结构有问题吧?
绘制流程:
1.清除后备缓冲
2.开始渲染
3.拷贝map中的区域到后备缓冲
4.map rect 位置偏移
5.交换后备缓冲到屏幕
6.重复到第一步
xingzhe2001 2009-12-02
  • 打赏
  • 举报
回复
srcRect.top++;
srcRect.bottom++;
每次只移一个像素?
lwf8758 2009-12-02
  • 打赏
  • 举报
回复
把present方法放在for循环之后??
那不就是for完了就将后台缓存的内容输出么,
必然就是一张静态图片啊。。。。

如果放在里面就是每一次循环提交一次后台缓存啊,结果就是运动的图片咯
shadowvv 2009-12-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xingzhe2001 的回复:]
srcRect.top++;
srcRect.bottom++;
每次只移一个像素?
[/Quote]

是的。看看效果罢了

8,304

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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