游戏开发论坛

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

在需求大批量的常量寄存器时,Lock和SetConstant那种做法速度

[复制链接]

17

主题

51

帖子

51

积分

注册会员

Rank: 2

积分
51
发表于 2006-7-17 22:35:00 | 显示全部楼层 |阅读模式
如题,假如现在在ps2.0的情况下,需要200个常量寄存器,顶点任意,vb创建时标志为WriteOnly|Dynamic,请问在Lock时用CPU计算快呢还是用SetConstant用GPU计算快?

如果对顶点有需求,比如顶点800个,但是每一个顶点size不大,只有24,或者顶点size很大有60的情况呢?或者顶点更多的情况下,比如5000个,这个时候那种速度更快呢?

18

主题

971

帖子

982

积分

高级会员

Rank: 4

积分
982
发表于 2006-7-18 11:40:00 | 显示全部楼层

Re:在需求大批量的常量寄存器时,Lock和SetConstant那种做法

Try to test it!

5

主题

686

帖子

697

积分

高级会员

Rank: 4

积分
697
QQ
发表于 2006-7-18 12:19:00 | 显示全部楼层

Re:在需求大批量的常量寄存器时,Lock和SetConstant那种做法

常量寄存器的内容是所有顶点必须共用还是说针对不同的顶点有不同的常量?如果是后者,可以尝试设置多流,然后用GPU算

17

主题

51

帖子

51

积分

注册会员

Rank: 2

积分
51
 楼主| 发表于 2006-7-18 13:58:00 | 显示全部楼层

Re:在需求大批量的常量寄存器时,Lock和SetConstant那种做法

针对不同的顶点有不同的常量,但是这里有一个问题就是如果很多顶点的情况下,要Draw多次,比如200个顶点一次Draw,(其余的寄存器有另外的用处),如果有1000个顶点就要Draw5次,还不如,一次lock然后只draw1次。但是拿不准。

To jk20012001:如果是所有顶点公用呢?

哎,难道一定要我自己去Test么。呵呵。

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2006-7-18 19:19:00 | 显示全部楼层

Re:在需求大批量的常量寄存器时,Lock和SetConstant那种做法

真是怪了,你自己提的问题你不去 TEST 谁去?

5

主题

686

帖子

697

积分

高级会员

Rank: 4

积分
697
QQ
发表于 2006-7-18 23:18:00 | 显示全部楼层

Re:在需求大批量的常量寄存器时,Lock和SetConstant那种做法

别说用GPU Draw5次了,就算Draw 50次也比用CPU Draw1次快得多
所有顶点公用的话,200个常量寄存器是不可能存到多流中的,VS只支持16个输入寄存器
LZ还是太懒了……自己测试下费不了好多功夫的吧

17

主题

51

帖子

51

积分

注册会员

Rank: 2

积分
51
 楼主| 发表于 2006-7-19 11:54:00 | 显示全部楼层

Re:在需求大批量的常量寄存器时,Lock和SetConstant那种做法


   呵呵,恩,我没有说不去测试嘛,只是我想听听大家的意见阿。

   我还是太懒了。。  ^_^

   To:jk20012001, 我记得好像在CPU 2.0的情况下,如果要正常渲染的话,一次最多333次Draw,如果CPU频率更低的话,Draw的次数更少,所以在渲染场景的时候‘必须要严格控制Draw的次数。

5

主题

686

帖子

697

积分

高级会员

Rank: 4

积分
697
QQ
发表于 2006-7-19 21:57:00 | 显示全部楼层

Re:在需求大批量的常量寄存器时,Lock和SetConstant那种做法

什么叫”要正常渲染的话,一次最多333次Draw“?

17

主题

51

帖子

51

积分

注册会员

Rank: 2

积分
51
 楼主| 发表于 2006-7-20 10:01:00 | 显示全部楼层

Re:在需求大批量的常量寄存器时,Lock和SetConstant那种做法

就是如果超过这个限额,会照成堵塞等现象,也就是不正常现象,具体原因我还不太清楚,只是好像记得有这么一个限制,所以在大型渲染的时候必须要考虑draw的次数

5

主题

686

帖子

697

积分

高级会员

Rank: 4

积分
697
QQ
发表于 2006-7-20 13:00:00 | 显示全部楼层

Re:在需求大批量的常量寄存器时,Lock和SetConstant那种做法

你说的是每帧调用DrawPrimitive的总次数吗?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-25 00:09

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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