请问为什么才画了100多个正方形CPU就...
void GameLoop()
{
MSG msg;
PeekMessage (&msg,NULL,0,0,PM_NOREMOVE);
while (msg.message != WM_QUIT)
{
if(::PeekMessage (&msg,NULL,0,0,PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else
{
if(NULL != lpD3D)
lpD3D->render ();
}
}
}
lpD3D::render ()
{
这里循环画100个三角形
为什么CPU一直在90%左右呢?
}
问题点数:20、回复次数:6Top
1 楼game321321()回复于 2006-03-10 11:53:07 得分 0
好象画一个三角形也是90%多
为什么?
是哪里出了问题?
Top
2 楼i_noname(晚九朝五)回复于 2006-03-10 12:32:45 得分 5
void GameLoop()
{
MSG msg;
PeekMessage (&msg,NULL,0,0,PM_NOREMOVE);
while (msg.message != WM_QUIT)
{
if(::PeekMessage (&msg,NULL,0,0,PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else
{
if(NULL != lpD3D)
lpD3D->render ();
}
sleep(1);//留点时间让cpu去干别的事
}
}Top
3 楼happy__888([顾问团]寻开心 www.e-jjj.com)回复于 2006-03-10 12:48:20 得分 15
即便一个三角形不画,你一直在那里循环也一样cpu占用巨大啊
你可以改造一下,只有当画面变化的时候才更新屏幕,调用Render就不至于了Top
4 楼game321321()回复于 2006-03-10 13:41:48 得分 0
happy__888([顾问团]寻开心) 我是窗口模式按照大哥说的方法 如果画面没有改变不进行render那么窗口被东西覆盖后游戏画面就没有了,而且做连续动画好象也不好做哦
i_noname(晚九朝五) 大哥说的方法很管用
但
我看到的所有d3d教程上面都是下面这样的一个循环啊,请问一般游戏中的循环是怎么样的?
void GameLoop()
{
MSG msg;
PeekMessage (&msg,NULL,0,0,PM_NOREMOVE);
while (msg.message != WM_QUIT)
{
if(::PeekMessage (&msg,NULL,0,0,PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else
{
if(NULL != lpD3D)
lpD3D->render ();
}
}
}
Top
5 楼game321321()回复于 2006-03-10 14:19:39 得分 0
D3DPRESENT_INTERVAL_IMMEDIATE 去掉这个立即刷新 CPU一下子降了
不过不知道对程序有什么影响 动画要连续又不想CPU占用太多 不知道这里应该设置什么好Top
6 楼happy__888([顾问团]寻开心 www.e-jjj.com)回复于 2006-03-10 15:29:11 得分 0
D3DPRESENT_INTERVAL_IMMEDIATE 控制的是刷新的次数
指定它的时候,你只要调用present这样的语句,就立即更新画面
如果不是它,那么就要等到显示器垂直回显的时候才能会更新画面,这样就会限定一定的更新速度
动画连续不连续,是受到很多因素的影响的
cpu的速度,显卡的速度,以及动画模型的复杂程度
视觉上的连续,只要在每秒25帧左右的速度更新就可以实现
我的意思是,你的动画的更新速度就是你的刷新的速度
你只要保证每秒钟更新画面25次以上,基本上就是连续
当然更新的速度越多,越连贯,但是响应的cpu的占据也就越高,需要一个平衡Top
相关问题
- 为什么我的打印机打不了正方形 Printer .Canvas.Rectangle(Rect(0,0,200,200))出来是长方形
- 急``怎样用CDC类在对话框上画一个指定颜色的正方形?
- 大哥帮帮忙,怎样用gdi在picturepox中画一个正方形或圆那?最好有原代码。
- 如何打印正方形?
- 请问我在向文本文件写内容时想产生一个换行(也就是回车),但打开后查看内容发现并没有换行,换行的地方变成了一个实心的正方形的符号,这是为什么???
- 编写一个程序计算圆,圆内接正方形,和圆外切正方形面积和周长
- 把picture1.width,picture1.height都设为50,但不是正方形?
- 请问怎么实现从正方形逐渐变成圆的??
- 怎样在网页中输入一些特殊的符号,如五角星,正方形,圆形等
- Authorware播放时出现一个正方形内一个大叉的图像,是什么原因?请指教。




