游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4433|回复: 5

[如图]OnIdle() + d3d渲染,怎么刷新被mfc窗口弄脏的矩形区域?

[复制链接]

50

主题

236

帖子

454

积分

中级会员

Rank: 3Rank: 3

积分
454
发表于 2012-12-16 00:05:57 | 显示全部楼层 |阅读模式
本帖最后由 微无渊 于 2012-12-16 00:11 编辑

1355580653_8901.jpg
如图,后面用d3d渲染的画布被mfc的关于窗口给弄脏了,怎么刷新干净呢?


报告:图片用网络地址会显示不出来?

834

主题

864

帖子

6465

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
6465
发表于 2012-12-16 00:14:20 | 显示全部楼层
WM_PAINT?

50

主题

236

帖子

454

积分

中级会员

Rank: 3Rank: 3

积分
454
 楼主| 发表于 2012-12-16 00:20:17 | 显示全部楼层
本帖最后由 微无渊 于 2012-12-16 00:35 编辑

多谢管理员的提醒,
的确是这个问题,
不过不是OnPaint,而是OnDraw,(窗口是CView)

那用不着OnIdle了?
如果不用OnIdle() ,渲染动画以及3D模型可能会麻烦些,需要手动Invalidate()

1万

主题

1万

帖子

2万

积分

管理员

中级会员

Rank: 9Rank: 9Rank: 9

积分
20515
发表于 2012-12-16 00:40:39 | 显示全部楼层
OnIdle空闲的事件,如果进程忙,会不会就没这个事件了。

50

主题

236

帖子

454

积分

中级会员

Rank: 3Rank: 3

积分
454
 楼主| 发表于 2012-12-16 00:50:06 | 显示全部楼层
本帖最后由 微无渊 于 2012-12-16 00:58 编辑
sea_bug 发表于 2012-12-16 00:40
OnIdle空闲的事件,如果进程忙,会不会就没这个事件了。


恩,比如关于对话框在拖动的时候,可能OnIdle基本上不会被执行,

刚刚试了一个可行的方法,就是在OnIdle()里面一直调用画布窗口的Invalidate()函数,就是让他不停的更新窗口,
然后在画布窗口的OnDraw()函数里不停的调用d3d的渲染函数.
这样子看起来似乎并不慢,

PS:刚刚渲染了一个20帧的800×600的法术动画,还挺流畅的

更正:
说错了,是关于窗口打开的时候,不拖动他,OnIdle()就不会被执行

1万

主题

1万

帖子

2万

积分

管理员

中级会员

Rank: 9Rank: 9Rank: 9

积分
20515
发表于 2012-12-16 00:55:54 | 显示全部楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-10 14:00

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表