游戏开发论坛

 找回密码
 立即注册
搜索
查看: 6362|回复: 14

如何让CPU与GPU同步?

[复制链接]

11

主题

112

帖子

112

积分

注册会员

Rank: 2

积分
112
发表于 2007-5-17 10:23:00 | 显示全部楼层 |阅读模式
尝试着渲染了一个小的地形图,地形宽为20 * 1.0f; 长为11 * 1.0f; 采用三角形带渲染,并开了二个顶点缓冲进行交替写入,顶点缓冲在显存,并设置为动态只写。然后用索引缓冲渲染,每一次交替渲染20 * 2个三角形。 FPS大约为200 - 300, 不知道这是否正常?
书上说,分开交替渲染能让CPU与GPU同步,写入buffer1并渲染,同时写入buffer2再渲染,我现在就是这样做的,不知道我的做法是否正确呢?

1

主题

51

帖子

51

积分

注册会员

Rank: 2

积分
51
发表于 2007-5-17 12:07:00 | 显示全部楼层

Re:如何让CPU与GPU同步?

书上都这么说,可实际上一次渲染一般情况下FPS都比分开渲染的高,偶也不知道怎回事!
   GPU的等待时间 + 一次LOCK+提交一个批  > N次LOCK+提交N个批
只有这个不等式成立,书上的才正确,老实说,我很怀疑,至少俺可以确定书上的方法并不是什么时候都是高效的,建议你还是测试下哪种方法效率高

2

主题

141

帖子

141

积分

注册会员

Rank: 2

积分
141
发表于 2007-5-17 12:32:00 | 显示全部楼层

Re:如何让CPU与GPU同步?

请兄弟你仔仔细细的去看明白了D3D Sample PointSprite吧
这个例子用的就是这种方式
对于小规模的VB、IB的确是显示不出什么优势
但是如果你的粒子数目是几万、十几万量级别的话,不这样做你的帧率是根本惨不忍睹的
这么多的新人想入游戏这行,我只想问你一句,你做到了吗:D3D的所有文档全部认真看过、领会了、所有sample全自己学会并融会贯通了吗?
牛顿所以成为牛顿是因为站在了巨人的肩上。
有MS这个超级巨人给你站,你却不站。。。

45

主题

1163

帖子

1165

积分

金牌会员

Rank: 6Rank: 6

积分
1165
发表于 2007-5-17 12:46:00 | 显示全部楼层

Re:如何让CPU与GPU同步?

^_^

11

主题

112

帖子

112

积分

注册会员

Rank: 2

积分
112
 楼主| 发表于 2007-5-17 12:49:00 | 显示全部楼层

Re:如何让CPU与GPU同步?

呵呵,非常感谢大家啊,尤其是chesskillerboss,你的建议我接受.不过你的心理压力好像太大了,我劝你发泄一下,但别发泄到我身上

106

主题

743

帖子

745

积分

高级会员

Rank: 4

积分
745
QQ
发表于 2007-5-17 15:21:00 | 显示全部楼层

Re:如何让CPU与GPU同步?

GPU的等待时间 + 一次LOCK+提交一个批  > N次LOCK+提交N个批


原来如此,本人一直都是一次LOCK+提交N个批。

1

主题

51

帖子

51

积分

注册会员

Rank: 2

积分
51
发表于 2007-5-18 00:14:00 | 显示全部楼层

Re:如何让CPU与GPU同步?

想请教下楼上的,一次lock是如何提交N个批的?
lock  提交0..提交N unlock 还是
lock unlock 提交0..提交N
如果是后者,建议你干脆在初试化时 lock一次,以后就再也不lock,偶而也会正确

1

主题

51

帖子

51

积分

注册会员

Rank: 2

积分
51
发表于 2007-5-18 01:00:00 | 显示全部楼层

Re:如何让CPU与GPU同步?

chesskillerboss: Re:如何让CPU与GPU同步?

请兄弟你仔仔细细的去看明白了D3D Sample PointSprite吧
这个例子用的就是这种方式
对于小规模的VB、IB的...

发个贴真不容易,除了讽刺就教育

第一,不是什么显示不出什么优势,而是明显的劣势.自己去改改这个例子就知道了
第二,如果你所谓的帧率仅仅对几万、十几万的有作用,那又有什么用,你能找出几个能消费得起这样的系统的游戏出来

1

主题

51

帖子

51

积分

注册会员

Rank: 2

积分
51
发表于 2007-5-18 01:11:00 | 显示全部楼层

Re:如何让CPU与GPU同步?

敢问2007: 如何让CPU与GPU同步?

尝试着渲染了一个小的地形图,地形宽为20 * 1.0f; 长为11 * 1.0f; 采用三角形带渲染,并开了二个顶点缓冲进...

估计你的地形不是LOD的,所以你的做法是错的,是LOD的话就当我瞎YY好了
书上说,分开交替渲染能让CPU与GPU同步。。。
可书上还说,提交的批数越多效率越低
GPU等待CPU,是因为CUP有大量的计算需要完成,而你的这个根本没有运算,所以分开是完全多余的,一次把它渲出来,效率一定不会比分开的低

89

主题

822

帖子

847

积分

高级会员

Rank: 4

积分
847
发表于 2007-5-18 09:12:00 | 显示全部楼层

Re:如何让CPU与GPU同步?

原则是Lock的时间越短越好,Lock和UnLock的时间就是GPU和CPU同步的时间,无论是分批次Lock还是一次Lock,总的时间是越短越好,而且Lock本身也是极其浪费时间的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-26 10:39

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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