游戏开发论坛

 找回密码
 立即注册
搜索
查看: 12072|回复: 27

我用D3D写的三维游戏,画面挺卡,但CPU占用率不到20%,内

[复制链接]

1

主题

18

帖子

18

积分

新手上路

Rank: 1

积分
18
发表于 2007-3-22 19:56:00 | 显示全部楼层 |阅读模式
小弟用D3D写了一个类似<皇牌空战>的小游戏,3d的。
建模用的是3DMAX7.0,用pandaDirectX插件导成X文件,分别是
     玩家控制的飞机---7000多个面片
     NPC客机----------3100个面片
     敌机-------------1100个面片*6
     球天-------------550个面片
另有导弹,子弹,等模型,但面片数很少,先不计。
但不管如何,整个场景用到面片数不会超过20,000个。

整个程序是用WIN32程序实现的,在WinMain()中消息循环里,每循环一次调用一次Render()来渲染上述几个Mesh.
并且没用任何特效,没加阴影等。
开发用的机器是AMD 64 3800+双核,1GBDDR2内存,7600GT,联想品牌机
测试用的机器配置是P4 3.0GHz双核,512MBDDR2内存,6800标准版显卡,DELL的品牌机

游戏在第二台机器上运行的时候画面明显很卡,但在进程列表里发现其CPU占用率不到20%,而且没有任何的硬盘读写操作,内存占用不到100MB,感觉很奇怪。而在第一台机器上运行则很流畅。

想想应该不是CPU的问题,因为毕竟使用率不到20%。有同学说是因为D3D会把许多工作交给显卡去做,所以在显卡渲染的时候CPU就会等显卡,CPU的占用率自然就不高。为了验证他的说法,我把第一台机器的7600GT拿下换到第二台机器上去用,果然游戏是流畅了(汗一个先-_-!,6800标版居然拼不过7600GT)。

但又说回来,小弟的场景并不复杂,面片数不过两万个,又没有任何的特效,如果连6800标版(PCIe的口)也带不起来,就不用说那些大众化配置的机器了。
因此小弟想问一下,是不是D3D中mesh模型的 DrawSub()函数调用的时候有什么注意事项?或者说有什么优化措施?以前和同学聊天的时候也就讨论过关于X文件的问题,说是真正的游戏公司都不会用这种格式的文件,而是自己做一套格式出来,目的就是为了提高效率,但小弟目前唯一能用的就只有X文件了。所以在这里向各位达人求教了,希望大家能赐教,不胜感激!

QQ278153559,  acefighter@hdu.edu.cn
sf_2007322195553.jpg

1

主题

18

帖子

18

积分

新手上路

Rank: 1

积分
18
 楼主| 发表于 2007-3-22 19:57:00 | 显示全部楼层

Re: 我用D3D写的三维游戏,画面挺卡,但CPU占用率不到20%

2
由于周围同学用OPenGL的多,而D3D的好像只有我一个,所以有问题请教起来也比较困难,好不容易好发有这样一个论坛,希望大家能帮帮我 [em10]
下面是游戏的一些截图,画面比较 差,见谅啦
sf_2007322195637.jpg

1

主题

18

帖子

18

积分

新手上路

Rank: 1

积分
18
 楼主| 发表于 2007-3-22 19:57:00 | 显示全部楼层

Re: 我用D3D写的三维游戏,画面挺卡,但CPU占用率不到20%

3
sf_200732219575.jpg

1

主题

18

帖子

18

积分

新手上路

Rank: 1

积分
18
 楼主| 发表于 2007-3-22 19:57:00 | 显示全部楼层

Re: 我用D3D写的三维游戏,画面挺卡,但CPU占用率不到20%

4
sf_2007322195727.jpg

1

主题

18

帖子

18

积分

新手上路

Rank: 1

积分
18
 楼主| 发表于 2007-3-22 19:58:00 | 显示全部楼层

Re: 我用D3D写的三维游戏,画面挺卡,但CPU占用率不到20%

5
sf_2007322195747.jpg

18

主题

971

帖子

982

积分

高级会员

Rank: 4

积分
982
发表于 2007-3-22 22:02:00 | 显示全部楼层

Re: 我用D3D写的三维游戏,画面挺卡,但CPU占用率不到20%

CPU占用不到20%,这大概就是你卡的原因。是否用了sleep?

18

主题

971

帖子

982

积分

高级会员

Rank: 4

积分
982
发表于 2007-3-22 22:04:00 | 显示全部楼层

Re:我用D3D写的三维游戏,画面挺卡,但CPU占用率不到20%,

另外,补充两点:
1."有同学说是因为D3D会把许多工作交给显卡去做,所以在显卡渲染的时候CPU就会等显卡,CPU的占用率自然就不高。为了验证他的说法,我把第一台机器的7600GT拿下换到第二台机器上去用,果然游戏是流畅了"这种说法根本是错误的,CPU就算在等待中,也一样被你的线程占着来等待,所以也应该是100%的占用,两核应该也会差不多占50%以上。除非你没用消息循环。

2.公司里不用x文件不是因为效率问题,而是因为x文件在N多地方满足不了游戏开发的需要。
感觉楼主发这个图主要是打广告而不是问问题

34

主题

629

帖子

629

积分

高级会员

Rank: 4

积分
629
发表于 2007-3-22 22:39:00 | 显示全部楼层

Re:我用D3D写的三维游戏,画面挺卡,但CPU占用率不到20%,

窗口模式下运行3d程序cpu占用率低有很多原因,有驱动程序方面的也有操作系统方面的,全屏的话就会好很多。cpu等待gpu用的是while(1)来等的,所以理论上是100%占用

10

主题

69

帖子

69

积分

注册会员

Rank: 2

积分
69
发表于 2007-3-23 03:27:00 | 显示全部楼层

Re:我用D3D写的三维游戏,画面挺卡,但CPU占用率不到20%,

不错的作品啊,非常好奇作品中physics engine的实现细节,楼主可否透露些

6

主题

307

帖子

309

积分

中级会员

Rank: 3Rank: 3

积分
309
发表于 2007-3-23 09:09:00 | 显示全部楼层

Re:我用D3D写的三维游戏,画面挺卡,但CPU占用率不到20%,

每个人的设计不一定一样,瓶颈在哪里要靠你自己慢慢找的

一般多是同过逐步关闭一个个模块来找出瓶颈的位置,有的时候瓶颈可能是你意想不到的简单
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-26 19:13

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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